Crow_Null
Crow_Null
采纳率100%
2016-10-11 04:20

QT5中 socket 与 多线程的问题(聊天程序)

  • 多线程
  • c++
  • qt5
  • 聊天
  • qt
已采纳

大家好
我在用QT5写一个聊天程序
用的是c/c++的封装的socket函数(QT封装的UDP不知道为什么不能正常发包)
问题是这样的:

有两个窗口
1. MainWindow 类的 login,程序启动首先显示它
2. Dialog 类的 chat, 要求登陆成功后才显示它
这两个窗口在main中QApplication a 和 a.exec()之间创建。
login窗口其中一个button点击后可以向服务器发送一个登陆请求,那么,如何
接收这个请求呢?我目前的做法是同样将这个button connect了一个receive函数,
不过只接受一个包,这样实现真的很丑,而且无法做到持续监听(这是chat窗口中的
关键)

我尝试用了c++11的thread来写多线程,传入一个窗口的指针,但好像不允许在子线程里调用窗口类实例的show()之类的函数,报错了(这点也是我很想知道的,类中定义的public成员函数可以在子线程中调用,但是不能调用诸如show(), close()之类的函数)

我刚学QT没多久,参考的很多QT聊天程序都是用QT封装的socket,但是这边用不了,如果一定要用c/c++封装的
有什么好的解决办法来实现吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 5年前
  • qq_33747722 即步 5年前

    发布的话你尝试使用release发布;
    Qt本身就是一套类库,你在程序中使用C/C++的第三方库应该不会出错

    点赞 评论 复制链接分享