关于Qt多线程的问题,请求各位大神给点建议或者解决方案 吧,我实在无力了

songzh215 2012-05-09 04:24:09
我最近在忙于做老师布置的 一个项目,我做的项目是一个局域网聊天的软件,里面有一部分用到了多线程,我打算用多线程实现一个可以 多个人同时聊天的功能,就是说打开一个对话框就是一个线程,接收到对方的消息创建一个对话框也是创建一个线程,可是我在创建的新线程中new 一个聊天的dialog对象(对话框里面存了一些udpsocket对象以及IP地址还有Hostname等,有信号和槽机制来接收消息以及发送消息),然后在thread::run方法内直接执行对话框的exec()函数,可是每当我的程序收到对方发过来的信息的时候,我的程序就会崩溃,出错的信息是这样的: ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1264, 多线程的程序我第一次编,Qt使用也不是 很熟练,我网上查了好多,也没理清思路,望各位大神指点一下,或者告诉我一个替代这种方法的更好的思路,不甚感激
...全文
262 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuchang 2012-05-09
  • 打赏
  • 举报
回复
错误说的很清楚,Widgets只能在界面线程中创建,而不是后台线程
可以为每一个窗口创建一个后台线程来收发数据,而不是在线程中创建对话框
kxywn 2012-05-09
  • 打赏
  • 举报
回复
对多线程里涉及到公用资源,要做保护,一个时间内,只能一个线程控制一个资源,这个是必须的,可以用线程互斥,或事件对象,或资源加锁,试试

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧