gpt4 book ai didi

c++ - 使用 QFuture 更新 QProgressDialog

转载 作者:可可西里 更新时间:2023-11-01 18:19:34 25 4
gpt4 key购买 nike

主 GUI 线程在等待 QFuture 时更新 QProgressDialog 的正确方法是什么。具体来说,这个循环中发生了什么:

QProgressDialog pd(...);
QFuture f = ...;

while (!f.isFinished()) {
pd.setValue(f.progressValue());

// what goes here?
}

现在我有一个类似 sleep() 的调用,但这不是最佳选择(当然会引入一些 GUI 延迟)。

如果我什么都不放,主线程将循环使用 pd.setValue(),浪费 CPU 周期。

我希望放置类似 QCoreApplication::processEvents(flags,maxtime) 的东西,但如果事件队列为空,它会立即返回。我想要一个等到 maxtime 或者即使队列为空的版本。这样,我得到了延迟,并且主线程始终准备好响应 GUI 事件。

最佳答案

使用 QFutureWatcher使用信号和槽监视 QFuture 对象。

QFutureWatcher watcher;
QProgressDialog pd(...);
connect(&watcher, SIGNAL(progressValueChanged(int)), &pd, SLOT(setValue(int)));
QFuture f = ...
watcher.setFuture(f);

关于c++ - 使用 QFuture 更新 QProgressDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com