gpt4 book ai didi

c++ - QT GUI 水平 slider setValue 与 QElapsedTimer

转载 作者:行者123 更新时间:2023-11-28 06:46:57 24 4
gpt4 key购买 nike

我有一个 GUI 按钮,它调用 shell 脚本来开始录制视频。另外我想要一个 slider 来显示录制进度(最长录制时间为 30 秒)。我构建了以下函数:

coid MainWindow::on_recordStart_clicked()
{
QElapsedTimer timer;
QProcess *Prozess = new QProcess();
Prozess->start("record.sh");
timer.start();
for(;;)
{
ui->timelineLabel->setText(QString::number(timer.elapsed())); //label
ui->timeLine->setValue(timer.elapsed()); //slider
if (timer.hasExpired(30000)) break;
}

它只在中断后更新 Slider 和 Label。谁知道为什么?

最佳答案

您的主 (UI) 线程正忙于遍历您的 for 循环,无法处理更新标签的事件。

有一种快速但肮脏的解决方案(未测试),在 setValue 之后添加以下行:

QCoreApplication::processEvents();

更好的解决方案是将进程处理移至单独的线程,并通过信号/槽将进度通知主线程。

关于c++ - QT GUI 水平 slider setValue 与 QElapsedTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24801936/

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