有没有办法在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)
将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)
| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |