相关疑难解决方法(0)

将Q_GADGET作为信号参数从C++传递到QML

无法在QML代码中获取C++对象的属性.对象作为参数传递给信号.

预期在QML,属性text的的Record对象可以被提取.价值应该是abc.QML将对象视为QVariant(Record),并将其属性text视为undefined.

Record是类似值的类型QPoint,所以它使用Q_GADGET声明.

HPP:

#ifndef LISTENP_HPP_
#define LISTENP_HPP_

#include <QObject>

#include "Record.hpp"

class ListenP: public QObject
{
Q_OBJECT

public:
    ListenP();
    virtual ~ListenP();

    void emitGotRecord();

signals:
    void gotRecord(Record r);
};

#endif /* LISTENP_HPP_ */
Run Code Online (Sandbox Code Playgroud)

CPP:

#include "ListenP.hpp"

ListenP::ListenP() :
        QObject()
{
}

ListenP::~ListenP()
{
}

void ListenP::emitGotRecord()
{
    emit gotRecord(Record("abc"));
}
Run Code Online (Sandbox Code Playgroud)

hpp for Record:

#ifndef RECORD_HPP_
#define RECORD_HPP_

#include <QObject>
#include <QMetaType>

class Record …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qtquick2 qgadget

3
推荐指数
1
解决办法
3935
查看次数

标签 统计

c++ ×1

qgadget ×1

qml ×1

qt ×1

qtquick2 ×1