0

在我的项目中,当 QProgressDialog 显示进度时,我正在运行一个函数。

QProgressDialog progress("Saving savegame.dat...", "Abort Save", 0, 3016, this);
        progress.setWindowModality(Qt::WindowModal);

//... some loops and other calculations run while I update the progress bar with:
progress.setValue(1000);

一切都很好,直到我开始另一个过程。(打开一个cli程序)

QProcess decomBR;
QStringList filePathListBR;
filePathListBR.append("-o");
filePathListBR.append("stuff\\compress.bms");
filePathListBR.append("stuff\\regions\\xbox_chunks\\br");
filePathListBR.append("stuff\\regions\\xbox_chunks\\br");
decomBR.start("stuff\\quickbms.exe", filePathListBR);
decomBR.waitForFinished();

一旦启动这样的进程,进度条对话框就会隐藏或其他东西,并且不再显示进度,但进程仍然运行良好。

有什么办法可以防止这些进程“关闭”QProgressDialog?

编辑:显然,对话框没有关闭,它只是主窗口优先并“覆盖”对话框......如果这有意义的话。有没有办法让对话框保持显示优先级?

谢谢你的时间 :)

4

1 回答 1

0

我没有尝试过,但setWindowFlags(Qt::WindowStaysOnTopHint);可能会有所帮助。请注意,它是一个标志,因此您需要编写如下内容:

progress.setWindowsFlags( progress.getWindowsFlags() | Qt::WindowStaysOnTopHint );

考虑使用断言来查看它是否已经设置,如果是,那么您可以明确地忽略我的答案并通过否定来增加人类知识!

于 2013-09-29T04:06:40.610 回答