[英]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.