gpt4 book ai didi

c++ - 在 Qt 中正确使用进度条?

转载 作者:行者123 更新时间:2023-11-28 02:48:48 25 4
gpt4 key购买 nike

我必须通过串口发送一个文件,所以我使用了一个单独的线程,命名为serialWorker

在主线程中我有这个:

ui->progressBar->setMaximum(file.size());    

QTextStream in(&file);
while(!in.atEnd()){

serialWorker.send(line);

ui->progressBar->setValue(in.pos());

}

问题在于进度条不是“实时的”,即,由于 serialWorker 不会阻塞主线程,因此循环无需等待即可运行。我应该如何更好地处理这个问题?

最佳答案

您正在循环中更新进度条,这会阻塞主 GUI 线程,因此您的进度条不会得到更新。

您应该在 serialWorker 中使用一个信号来通知用户界面中的进度条进度值。在您的发送功能中,您应该发出具有适当值的信号。信号是这样的:

void progressChanged(int val);

您还应该将 progressChanged(int) 信号连接到 QProgressBar 的 setValue(int value) 插槽。

最后一点是当它在其他线程中时,您不应该直接调用发送。正确的方法是将 send 定义为一个插槽,并将信号连接到该插槽,并在您想要调用 send 时发出信号。

关于c++ - 在 Qt 中正确使用进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23511260/

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