Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt信号连接插槽仅在特征线或“释放”构建上触发_C++_Qt_Signals_Connect_Slots - Fatal编程技术网

C++ Qt信号连接插槽仅在特征线或“释放”构建上触发

C++ Qt信号连接插槽仅在特征线或“释放”构建上触发,c++,qt,signals,connect,slots,C++,Qt,Signals,Connect,Slots,我的应用程序中有一些特定的对象,它们与信号和插槽绑定在一起。直到最近,当这些插槽所连接的信号发出时,这些插槽似乎没有可靠地被调用。 当我在发布模式下构建项目时,这些对象连接正确,实际上工作正常,但是我刚刚注意到,如果我在调试模式下构建,插槽似乎不会被调用,除非我使用断点跟踪它们 此外,如果我使用调试器循序渐进地执行代码,或者在其中一个插槽中设置断点,那么这些插槽似乎确实被调用 这是我连接这些特定对象的方法: void Window::dynamicConnect(Entities *sender

我的应用程序中有一些特定的对象,它们与信号和插槽绑定在一起。直到最近,当这些插槽所连接的信号发出时,这些插槽似乎没有可靠地被调用。 当我在发布模式下构建项目时,这些对象连接正确,实际上工作正常,但是我刚刚注意到,如果我在调试模式下构建,插槽似乎不会被调用,除非我使用断点跟踪它们

此外,如果我使用调试器循序渐进地执行代码,或者在其中一个插槽中设置断点,那么这些插槽似乎确实被调用

这是我连接这些特定对象的方法:

void Window::dynamicConnect(Entities *senderName, const QString &signalName, Entities *receiverName, const QString &slotName)
{    
    QMetaMethod signal = senderName->metaObject()->method(senderName->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(qPrintable(signalName))));
    QMetaMethod slot = receiverName->metaObject()->method(receiverName->metaObject()->indexOfSlot(QMetaObject::normalizedSignature(qPrintable(slotName))));
    QObject::connect(senderName,signal,receiverName,slot);
}
我也没有收到任何错误。有人有什么想法吗?
这是一个问题的唯一原因是因为我不想一直在两个构建之间切换。

插槽如何启动?那么如何检查插槽是否被调用?@Silicomancer我的意思是,除非我手动正常调用该方法(比如最后一行代码),否则当与插槽相关的信号发出时,插槽永远不会被调用。为了检查它是否被调用,插槽只有一个特定的功能,比如播放音频。因此,除非进行调试或发布构建,否则插槽不会被调用,或者插槽中的函数不会被调用。请显示插槽声明;void Entities::play{this->audPlayer->play;}audPlayer是一个QMediaPlayer,它在构造函数中声明了正确的信息。如果调试器已连接或未在调试生成中,则执行的代码必须相同。因此,请确保您没有遇到在连接之前或类似情况下会发出信号的计时问题。