我试图通过在C ++代码中引发信号来调用已注册类型的QML插槽。插槽永远不会被调用。
在main.cpp中的我注册了类型:
qmlRegisterType<MsgController>("MyStuff",1,0,"MsgController");
在msgcontroller.h中的我声明了信号:
class MsgController : public QObject
{
Q_OBJECT
public:
...
signals:
void msgReceived(const QString& msg);
在msgcontroller.cpp中我举起信号
void MsgController::setMsg(const QString &msg)
{
emit msgReceived(msg);
}
在我的main.qml文件中,我有msgReceived的插槽:
import MyStuff 1.0
MsgController {
onMsgReceived: {
console.log("message received:"+msg);
}
}
永远不会调用onMsgReceived插槽。有什么我错过的吗?
答案 0 :(得分:0)
我没有意识到我在代码中连接了错误的MsgController实例。一个实例是由C ++代码创建的,但我真的想调用Qml引擎创建的实例上的插槽。 一旦我连接到正确的实例,上面的代码工作正常。