C+的Access成员变量+;QML中的对象 有没有办法在QML中访问C++对象的成员变量?在main.cpp中,我向QML公开了一个对象。如何访问QML中的controller.x Controller ctrl; QQuickView view; QQmlContext* ctx = view.rootContext(); ctx->setContextProperty("controller", &ctrl);
在控制器中:C+的Access成员变量+;QML中的对象 有没有办法在QML中访问C++对象的成员变量?在main.cpp中,我向QML公开了一个对象。如何访问QML中的controller.x Controller ctrl; QQuickView view; QQmlContext* ctx = view.rootContext(); ctx->setContextProperty("controller", &ctrl);,c++,qt,object,qml,C++,Qt,Object,Qml,在控制器中: public: int x; < P>将C++成员声明为: 您还需要声明一个信号,这就是NOTIFY功能所指的信号。当属性值更改时,这将让QML知道: 如果未指定读取访问器函数,则需要成员变量关联。这使得给定的成员变量可读写,而无需创建读写访问器函数。如果需要控制变量访问,除了成员变量关联(但不是两者)之外,还可以使用读或写访问器函数 然后在QML中访问它,如下所示: controller.x < P>将C++成员声明为: 您还需要声明一个信号,这就是NOTIFY功能所指的信
public:
int x;
< P>将C++成员声明为: 您还需要声明一个信号,这就是
NOTIFY
功能所指的信号。当属性值更改时,这将让QML知道:
如果未指定读取访问器函数,则需要成员变量关联。这使得给定的成员变量可读写,而无需创建读写访问器函数。如果需要控制变量访问,除了成员变量关联(但不是两者)之外,还可以使用读或写访问器函数
然后在QML中访问它,如下所示:
controller.x
< P>将C++成员声明为: 您还需要声明一个信号,这就是
NOTIFY
功能所指的信号。当属性值更改时,这将让QML知道:
如果未指定读取访问器函数,则需要成员变量关联。这使得给定的成员变量可读写,而无需创建读写访问器函数。如果需要控制变量访问,除了成员变量关联(但不是两者)之外,还可以使用读或写访问器函数
然后在QML中访问它,如下所示:
controller.x
如果不想使用属性绑定,可以这样做
class Controller : public QObject
{
Q_ObJECT
public:
Q_INVOKABLE int getX() const { return x; }
private:
int x;
}
在您的QML中
controller.getX()
如果不想使用属性绑定,可以这样做
class Controller : public QObject
{
Q_ObJECT
public:
Q_INVOKABLE int getX() const { return x; }
private:
int x;
}
在您的QML中
controller.getX()
好的,谢谢您的回复,这非常有帮助,但在我的控制器中,我有std::unordered_映射,ValueReceiver是一个类,其中我有qtcSocket,在那里我有slot start(),它连接套接字和服务器。我不知道如何从这个映射将信号从QML连接到ValueReceiver。您可以遵循相同的方法。可能是另一个问题,代码很少会有帮助。在我的类中:Q_INVOKABLE QHash getQHash()const{return values receivers;}在qml中我得到:Error:Unknown method return type:QHashOk,感谢您的回复,这非常有用,但在我的控制器中我有std::unordered_映射,ValueReceiver是一个类,其中我有QtcpSocket,在那里我有slot start(),它将套接字连接到服务器。我不知道如何从这个映射将信号从QML连接到ValueReceiver。您可以遵循相同的方法。可能是另一个问题,代码很少会有帮助。在我的类中:Q_INVOKABLE QHash getQHash()const{return values receivers;}在qml中我得到:Error:Unknown method返回类型:QHash