Qt多线程中怎么显示QMessageBox

 我来答
元大师817
2013-10-24 · TA获得超过102个赞
知道答主
回答量:119
采纳率:50%
帮助的人:124万
展开全部
项目启动时将打开主对话框,点击主对话框中的按钮将打开测试对话框(模式对话框),点击测试对话框中的按钮将新建一个测试线程去运行测试程序,我在测试线程中需要弹出message对话框的地方向测试对话框去发送一个消息,测试对话框收到消息后将显示这个对话框,然后根据用户的选择,将选择的结果发回给测试线程,我发现测试对话框类能准确收到该消息,但是一到要显示QMessageBox的地方就报告ASSERTfailureinQWidget:"WidgetsmustbecreatedintheGUIthread.",filekernel/qwidget.cpp,line1299。
另外,我查了写资料,很多都说窗口widget应该在GUI线程中显示,这个GUI线程指程序的主线程,难道我应该向主窗口发信息,在主对话框中弹出message对话框?那我不是需要在主对话框中很早就new一个测试线程,而测试线程需要的参数只有测试对话框运行后才能确定,参数得如何传递,真要这样,Qt的多线程是不是很不合理?线程应该向打开他的父线程发送消息才对,怎么会向其父线程的父窗口去发送消息??!!
Qt多线程�0�2窗口显示
------解决方案--------------------------------------------------------引用:引用:QMessagebox只能用于主线程
非主线程不能直接调用QMessagebox
建议用signal-slot关联
我的测试对话框类中有将信号和槽进行连接connect(testThread,SIGNAL(emitMsgBoxSignal(……
把connect的最后一个参数去掉。
------解决方案--------------------------------------------------------
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式