【发布时间】: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 模式。它将帮助您避免主窗口消失
标签: qt qmainwindow qfiledialog