C++;注册类型上的信号QML插槽 我试图通过在C++代码中提高信号来调用注册类型的QML时隙。老虎机永远不会被调用

C++;注册类型上的信号QML插槽 我试图通过在C++代码中提高信号来调用注册类型的QML时隙。老虎机永远不会被调用,c++,qml,signals-slots,qt5.4,C++,Qml,Signals Slots,Qt5.4,在main.cpp中,我注册类型: qmlRegisterType<MsgController>("MyStuff",1,0,"MsgController"); 在msgcontroller.cpp中,我发出信号 void MsgController::setMsg(const QString &msg) { emit msgReceived(msg); } 在main.qml文件中,我有msgReceived的插槽: import MyStuff 1.0

在main.cpp中,我注册类型:

qmlRegisterType<MsgController>("MyStuff",1,0,"MsgController");
在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);
            }          
        }

从未调用接收到的插槽。有什么我遗漏的吗?

我没有意识到我在代码中连接到了错误的MsgController实例。一个实例是由C++代码创建的,但我真的想调用QML引擎创建的实例上的时隙。
一旦我连接到正确的实例,上面的代码就可以正常工作。

是否调用了setMsg()?如果您发布完整且运行的代码,这会有所帮助。是的,我正在调用setMsg。我没有把整件事都贴出来,这样人们就不必阅读所有不感兴趣的部分。你不必把整件事都贴出来,只是为了重现你的问题。是的,我想我应该贴另一个细节。有两个实例的MSGCOMPER,一个在C++源代码中,一个在QML文件中。我接错了对象的插槽,这就是它不工作的原因。
import MyStuff 1.0
MsgController {            
            onMsgReceived: {
                console.log("message received:"+msg);
            }          
        }