Posts Tagged ‘线程间的通信’
QT 多线程(UI线程)间的signal/slot(信号与槽)通信
星期三, 五月 1st, 2013 953 views写这篇的时候感觉有点像写之前Android主线程与子线程间的通信消息队列,其实需要这么做的原因基本相同,即QT在主线程(UI线程)中某些阻塞行为会造成UI的更新的阻塞,举例来说,在UI线程中创建一个while循环,并在这个while循环中对UI进行更新,运行结果是UI完全无响应,因为UI线程一直卡在while中无法跳出来去完成更新,虽然它不断的得到了更新UI的通知。
因此在本篇中我们将通过多线程的方式来解决此类问题。
QT中已经替我们实现了一个线程类QThread,我们只需要继承它就好。使用时只需->start()即可。
1 2 3 4 5 6 7 8 9 10 | class MyThread : public QThread { Q_OBJECT public: MyThread(); signals://定义一个信号 void sendString(QString); protected: void run(); }; |
上面的代码简单实现了一个线程类的头文件,这里注意一下定义的signals(信号)。
信号与槽是QT特有的一个通信机制,简单阐述一下其运用在线程间的工作流程。
(更多…)