在QML中访问C++对象的成员变量

Szy*_*son 1 c++ qt object qml

有没有办法在QML中访问C++对象的成员变量?在main.cpp我揭露的目的是QML.如何controller.x在QML中访问?

Controller ctrl;
QQuickView view;
QQmlContext* ctx = view.rootContext();
ctx->setContextProperty("controller", &ctrl);
Run Code Online (Sandbox Code Playgroud)

在控制器中:

public:
 int x;
Run Code Online (Sandbox Code Playgroud)

Mit*_*tch 6

将C++成员声明为属性:

class Controller : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int x MEMBER x NOTIFY xChanged)

    // ...

signals:
    void xChanged();

private:
    int x;
};
Run Code Online (Sandbox Code Playgroud)

您还需要声明一个信号,这是该NOTIFY功能所指的信号.这将让QML知道属性的值何时发生变化:

如果未指定READ访问器函数,则需要MEMBER变量关联.这使得给定成员变量可读写,而无需创建READ和WRITE访问器函数.如果需要控制变量访问,除了MEMBER变量关联(但不是两者)之外,仍然可以使用READ或WRITE访问器函数.

然后在QML中访问它,如下所示:

controller.x
Run Code Online (Sandbox Code Playgroud)