qt 信号导致连接时出现分段错误

Posted

技术标签:

【中文标题】qt 信号导致连接时出现分段错误【英文标题】:qt signals cause segmentation fault on connect 【发布时间】:2012-08-18 15:46:01 【问题描述】:

我制作了一个窗口小部件,当按下按钮时它会发出一个信号:

signals:
    void SaveTask( void );

在我的 mainwindow.cpp 中我定义(在构造函数中):

connect( taskWindow, SIGNAL(SaveTask()), task_view, SLOT(UpdateFromTasks()) );

taskWindow = 指向发出此信号的窗口的指针。 task_view = 指向主窗口中带有插槽的 treewidget 的指针。

它被设计成当你保存一个任务时它会显示在树视图中。

不幸的是,当我尝试运行程序时,它会导致连接线上的段错误,当我删除它时,程序运行正常(当然除了这个功能之外)。它确实编译并且所有元素都已初始化且可用。我只是不明白这怎么会失败。

【问题讨论】:

可以显示构造函数代码吗? 【参考方案1】:

似乎您在初始化 taskWindow 或 task_view 之前正在执行连接,并且正在使用未初始化的指针。

你也可以试试这个签名(应该是一样的,但只是为了更好的衡量)

signals:
    void SaveTask();

【讨论】:

空指针应该导致connect根据来源返回false。不过,未初始化的指针几乎可以做任何事情。 谢谢。刚刚换掉那个词 这就是问题所在,一切都已初始化。其他信号起作用。只是我尝试发出的那个没有(在运行时它只是连接上的段错误) 修复它,显然我在初始化之前调用了连接函数。我的代码一团糟! 是的,有时即使你发誓你已经采取了所有步骤,你也可以忽略一些操作顺序。换个眼睛看看总是有帮助的!

以上是关于qt 信号导致连接时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章

启动线程导致指针初始化时出现分段错误

分配时出现分段错误[重复]

尝试显示窗口时出现 Qt 错误分段错误

在 C++ 中使用向量时出现分段错误

测试从 qt4 迁移到 qt5 的库时出现分段错误

从堆栈读取时出现分段错误