Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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