我是QT的新手,需要在后台线程上运行一个进程但是我很难过:
QApplication::setOverrideCursor(Qt::WaitCursor);
window.connect();
QCoreApplication::processEvents();
QApplication::restoreOverrideCursor();
window.show();
目前connect()函数阻止了UI,如何在不锁定UI的情况下等待它? connect()正在对服务器进行重新计算。
答案 0 :(得分:0)
有很多方法可以做到这一点,例如创建一个QRunnable并在线程池中运行它,实现一个QThread,或者你可以在一个QtConcurrent::run的线程中运行你的方法,例如
auto future = QtConcurrent::run([&window] { window.connect(); })
返回QFuture对象是一个句柄,可用于等待线程完成,如果函数返回某些内容则检索结果等。
旁注:由于QMainWindow / QWidget是从QObject派生的,并且QObject :: connect存在各种重载,因此重命名connect方法可能是个好主意。