繁体   English   中英

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

[英]Access member variable of C++ object in QML

有没有办法访问QML中C ++对象的成员变量? main.cpp我将对象公开给QML。 如何在QML中访问controller.x

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

在控制器中:

public:
 int x;

将C ++成员声明为属性

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

    // ...

signals:
    void xChanged();

private:
    int x;
};

您还需要声明一个信号,这就是NOTIFY功能所指的内容。 这将让QML知道属性值何时更改:

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

然后像这样在QML中访问它:

controller.x

如果您不想使用属性绑定,则可以执行此操作。

class Controller : public QObject
{
  Q_ObJECT

  public:
    Q_INVOKABLE int getX() const { return x; }

  private:
    int x;
}

在您的QML中

controller.getX()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM