https://www.cnblogs.com/lifexy/p/10907901.html
1. 线程与界面组件需要注意的地方
- 在QThread线程中不能直接创建QWidget之类的界面组件.
- 因为在QT中,所有界面组件相关的操作都必须在主线程中(也就是GUI thread)
- 所以, QThread线程不能直接操作界面组件.
2.QThread线程如何操作界面组件-方法1
- 将多线程类对象封装为GUI界面类的类成员
- 然后在子线程定义信号函数,通过信号槽机制,向界面组件emit发射信号,从而实现间接操作.
3.QThread线程如何操作界面组件-方法2
- 使用QApplication::postEvent()实现向界面发送事件,从而能够封装一个自定义类
4.使用Invokes()函数来调用界面组件的信号槽-方法3
一般使用该函数(用来调用对方的私有信号或槽):
该函数的连接方式默认使用的是Qt::AutoConnection
- 表示如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。