写信号槽函数时,会遇到链接信号槽直接报错的情况。在此记录一种情况,以及简单的处理方式。
遇到也奇怪的问题
继承QObject 代码如下
class wgtA : public QObject
{
Q_OBJECT
public:
wgtA();
void print();
signal:
void pressButton();
};
class wgtB: public wgtA
{
Q_OBJECT
public:
wgtB();
void ppprint();
signal:
void pressButton_B();
};
当wgtA和wgtB 在同一个模块,那么触发信号是没有问题的。
当 wgtA和wgtB在不同模块,例如 wgtA 封装在dll,暴露头文件给wgtB用。那么出发wgtB的信号就会遇到如下错误标题:
the inferior stopped because it triggered an exception
遇到这个报错的情况,千差万别。要根据代码查找原因。
解决办法有如下几种:
1、把两个类封装在同一个dll。
2、wgtA 设置为导出类 ,也就是 dllexport参数。
3、 wgtA 用def 方式导出,要全部导出。
我这边是用第三种方式。
在使用Qt编程时,遇到信号槽在不同模块间无法正常连接的问题,导致程序异常停止。问题出现在当一个类(如wgtA)在DLL中,而另一个类(如wgtB)尝试连接其信号时。解决方法包括将所有类放在同一DLL、使用dllexport声明或通过def文件完全导出。作者采用第三种方法成功解决了问题。
5187

被折叠的 条评论
为什么被折叠?



