C ++和QML之间的通信
|
本页显示如何从QML内调用C ++函数。
我想做的是通过C ++函数更改按钮上的图像(触发状态更改或完成更改)。
我该如何实现?
更新
我尝试了Radon的方法,但是当我插入以下行时:
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
编译器抱怨如下:
error: cannot dynamic_cast \'((QMLCppBinder*)this)->QMLCppBinder::viewer.QDeclarativeView::rootObject()\' (of type \'struct QGraphicsObject*\') to type \'class QObject*\' (source is a pointer to incomplete type)
如果相关,QMLCppBinder是我尝试构建的类,以封装从多个QML页面到C ++代码的连接。这似乎比人们预期的要复杂。
这是一个骨架类,为此提供了一些上下文:
class QMLCppBinder : public QObject
{
Q_OBJECT
public:
QDeclarativeView viewer;
QMLCppBinder() {
viewer.setSource(QUrl(\"qml/Connect/main.qml\"));
viewer.showFullScreen();
// ERROR
QObject *test = dynamic_cast<QObject *>(viewer.rootObject());
}
}
没有找到相关结果
已邀请:
2 个回复
献导外拘
在C ++中:
→QObject.findChild(),QObject.setProperty()
埃庐
在您的“ 7”类中,声明一个信号,例如:
然后,当您想更改图像时,呼叫ѭ9。 现在在您的QML中,按以下方式监听此信号:
希望这可以帮助。