Advertisement

Qt GUI程序中主窗口与后台线程的数据传输

阅读量:

当Qt应用程序调用exec()函数后,将自动产生一个线程,该线程即为主线程,在图形用户界面程序中亦被称为GUI线程。主线程是唯一能够实例化QApplication或QCoreApplication对象,并对这些对象调用exec()方法以进入事件循环的线程。
在仅包含主线程的单线程环境下,每一个事件的触发都需要进入事件循环进行处理。如果在某一步骤中存在计算量较大的操作,则会导致CPU资源被持续占用,从而阻碍其他操作的执行,使界面出现冻结现象,例如以下情形:
主界面上设有两个按钮,其中一个按钮用于执行一项计算量极大的任务,并在完成后展示结果;另一个按钮则用于显示文本“hello, world!”。相关代码如下:
mainwindow.h:

复制代码
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
    Q_OBJECT
    
    public:
    explicit MainWindow(QWidget *parent = 0);

全部评论 (0)

还没有任何评论哟~