Qt 通过 QtConcurrent 解决主界面被阻塞的问题

it2026-04-24  7

概述

在主界面点击按钮,处理一下耗时的计算函数,由于计算函数耗时较久,所以会出现主界面被阻塞,提示未响应,然后等计算函数完成后,主界面就会恢复正常。

但是用户可能在提示未响应的时候就把程序关掉了,用户体验会很差,所以要解决这个问题。

引入

在 .pro 文件中加入 QT += concurrent在 mainwindow.h 中加入 #include <QtConcurrent>#include <QFuture>

代码

void MainWindow::on_pushButton_clicked() { // Calc 就是耗时的计算函数 QFuture<void> future = QtConcurrent::run(this, &MainWindow::Calc); while(!future.isFinished()) { QApplication::processEvents(QEventLoop::AllEvents, 100); } }

参考资料

Qt-doc-qtconcurrentrun

最新回复(0)