美文网首页
在C++中声明一个可供Qml读写的属性

在C++中声明一个可供Qml读写的属性

作者: Feel君 | 来源:发表于2017-03-06 13:24 被阅读42次

原型:

class ClassName : public QObject
{
    Q_OBJECT
    QString m_test;

    Q_PROPERTY(QString test READ test WRITE setTest NOTIFY testChanged)

signals:
    void testChanged(QString arg);

public slots:
    void setTest(QString arg)
    {
        if (m_test != arg) {
            m_test = arg;
            emit testChanged(arg);
        }
    }

public:
    QString test() const
    {
        return m_test;
    }

}

为了代码简洁,可先定义一个Qml属性导出宏:

#define QML_PROPERTY(type, name, \
    READ, getter, \
    WRITE, setter, \
    NOTIFY, notifyer\
    )  \
    type m_##name; \
    Q_PROPERTY(type name READ getter WRITE setter NOTIFY notifyer) \
    public: type getter##() const { return m_##name; } \
    public Q_SLOTS: void setter##(type arg) { if (m_##name != arg) {m_##name = arg; emit notifyer##(arg);}} \
    Q_SIGNALS:  \
        void notifyer##(type arg); \
    private:

则以上类可如下定义:

class ClassName : public QObject
{
    Q_OBJECT

   QML_PROPERTY(QString, test, READ, test, WRITE, setTest, NOTIFY, testChanged)
}

如此无论是通过类注册还是实例上下文,可在Qml中可以访问该属性,并可以调用其方法。

相关文章

  • 在C++中声明一个可供Qml读写的属性

    原型: 为了代码简洁,可先定义一个Qml属性导出宏: 则以上类可如下定义: 如此无论是通过类注册还是实例上下文,可...

  • Qml 问答

    在Qml 文件中可以访问一个上下文C++实例的属性吗? 可以,但该属性需通过Q_PROPERTY声明 如何在Qml...

  • C++调用QML代码

    C++调用QML实际上就是通过 QML 对象的指针去访问QML对象的属性和方法 只要获取到QML对象的指针,接下来...

  • QML Book 第十六章 用 C++ 扩展 QML

    16.用 C++ 扩展 QML(Extending QML with C++) 本章的作者:jryannel **...

  • Qt Quick 学习笔记(二) QML与C++双向对接

    QML→C++的对接 信号槽机制 大部分情况下,用户对QML的操作,需要调用对应的C++函数进行处理。QML上的操...

  • Objective-C 基础 - 属性

    @property 用于声明属性,自动实现属性的读写方法。 属性特质 原子性、读写权限、内存管理语义、方法名、其他...

  • 向qml注册类型

    当我们打算向qml中注册自定义的C++类型时,有几个问题需要考虑:1. 怎么将C++类型注册到qml框架中,即怎么...

  • (二)C++中的类与构造函数

    C++中的类与构造函数 一、C++中类的常用写法 1、在头文件中声明类的属性和方法 如:MyTeacher.h 2...

  • 6-关联对象

    属性 在类中声明一个属性会生成成员变量并声明和实现对应的set,get方法 在分类中声明一个属性只会声明对应的se...

  • 官方提供的基础指南一

    1.Hello World 程序 2.QML 实现GUI界面 QML 使用声明式语法实现GUI界面,要使用QML实...

网友评论

      本文标题:在C++中声明一个可供Qml读写的属性

      本文链接:https://www.haomeiwen.com/subject/jstugttx.html