使用 QFileDialog 后 QMainWindow 进入后台
Posted
技术标签:
【中文标题】使用 QFileDialog 后 QMainWindow 进入后台【英文标题】:QMainWindow goes background after using QFileDialog 【发布时间】:2015-05-02 15:45:30 【问题描述】:我有一个 Qt 应用程序,在单击按钮后会加载一些文件。我正在使用 QFileDialog 打开文件。每次我关闭文件对话框时,应用程序主窗口 (QMainWindow) 都位于所有其他打开的窗口(互联网浏览器、资源管理器等)之后。这是标准行为吗?有什么办法可以防止这种情况发生吗?我试过了
// set always on top window
Qt::WindowFlags flags = this->windowFlags();
this->setWindowFlags(flags | Qt::WindowStaysOnTopHint);
但这会导致文件对话框也在主窗口后面。
编辑: 这是调用文件对话框的代码片段(调用它的方法是我的类LoadData的静态方法):
void MainWindow::on_buttonIP_clicked()
loaded = LoadData::OpenFiles(IPFiles);
bool LoadData::openFiles(QStringList &fileNames)
// open files dialog
fileNames = QFileDialog::getOpenFileNames(0,
tr("Open files"), "", "Text Files (*.txt *.dat *.points)");
if (fileNames.isEmpty())
return false;
return true;
【问题讨论】:
使用 Qt::WindowStaysOnTopHint 是一个错误的解决方案,因为它会导致很多问题。您能否展示一下您是如何调用 QFileDialog(代码)的? 玩 Windows 模式。它将帮助您避免主窗口消失 【参考方案1】:QFileDialog::getOpenFileNames
的第一个参数不能是nullptr
。将其设置到您的主窗口,一切都会好起来的。
【讨论】:
以上是关于使用 QFileDialog 后 QMainWindow 进入后台的主要内容,如果未能解决你的问题,请参考以下文章