本文主要是介绍关于on_listWidget_currentItemChanged问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天遇到了一个问题,我子界面和主界面各有一个qlistwidget,然后点击item需要执行一些业务逻辑,在测试时发现软件崩溃,通过断点发现是主界面的槽被触发了。
为什么我点击的是子界面的qlistwidget,却也触发了主界面的槽?
现在来一步一步追踪。。。。
这是总的堆栈流程,第一步通过事件循环开始分发事件,可以看到从Main函数开始,走进了我们的application也就是我们的主线程事件循环,然后走到了QGuiApplication(QGuiApplication包含主事件循环,在该循环中,来自窗口系统和其他来源的所有事件都将被处理和调度)然后qeventloop是我们的事件循环类,然后一直走到23行,进入notify中,notify会捕获qt的所有事件,然后发送了鼠标事件(14行),触发qlistwidgetitem的currentchanged开始分发信号(6行),接收到信号后on_listWidget_currentItemChanged,同时被触发。
完整的追踪过程,子类槽触发堆栈
这篇关于关于on_listWidget_currentItemChanged问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!