在Qt中连接不同类别的信号和插槽

时间:2015-12-24 12:21:22

标签: c++ qt signals-slots

在Qt中,我的MainController班级在其构造函数中创建了ViewControllerNetworkController

创建后,我需要将QPushButton::clicked信号连接到onStartListening类中的NetworkController广告位。

连接代码:

connect(m_viewController->getStartWindow()->getStartListeningButton(),
&QPushButton::clicked, m_networkController, &NetworkController::onStartListening);

当我尝试编译代码时,出现以下错误:

  

bla.exe中0x66D641BA(Qt5Cored.dll)的未处理异常:   0xC0000005:访问冲突读取位置0xCDCDCDD1。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

一种技术是将对象置于connect()内部,并将对象的信号连接到插槽。在您的情况下,您将获得viewController的启动窗口的按钮。

另一种技术是在类中创建一个信号,并将此信号连接到父类中的插槽。它需要更多的代码,但是你不需要关心是否创建了对象,因为如果object为Null则不会发出任何信号。