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特有的一个通信机制,简单阐述一下其运用在线程间的工作流程。
(更多…)