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)
还没有任何评论哟~
