在我的项目中,我有一个正在运行的函数,而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?
编辑:显然,对话框没有关闭,只是主窗口正在优先处理并“覆盖”对话框...如果这是有意义的。有没有办法让对话框保持显示优先级?感谢您的时间:)
答案 0 :(得分:0)
我没有尝试过,但setWindowFlags(Qt::WindowStaysOnTopHint);
可能有所帮助。请注意,它是一个标志,因此您需要编写如下内容:
progress.setWindowsFlags( progress.getWindowsFlags() | Qt::WindowStaysOnTopHint );
考虑使用断言来查看它是否已经设置,如果是,那么你可以明确地驳回我的答案并通过否定来增加人类的知识!