使用 QFileDialog 后 QMainWindow 进入后台
QMainWindow goes background after using QFileDialog
我有一个 Qt 应用程序,它在单击按钮后加载一些文件。我正在使用 QFileDialog 打开文件。每次我关闭文件对话框时,主应用程序 window (QMainWindow) 都落后于所有其他打开的 windows(互联网浏览器、资源管理器等)。这是标准行为吗?有什么办法可以防止这种情况发生吗?我试过了
// set always on top window
Qt::WindowFlags flags = this->windowFlags();
this->setWindowFlags(flags | Qt::WindowStaysOnTopHint);
但它导致文件对话框也位于主要 window.
后面
已编辑:
这是调用文件对话框的代码片段(调用它的方法是我的 class 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;
}
QFileDialog::getOpenFileNames
的第一个参数不能是 nullptr
。设置成你的主window,一切就OK了。
我有一个 Qt 应用程序,它在单击按钮后加载一些文件。我正在使用 QFileDialog 打开文件。每次我关闭文件对话框时,主应用程序 window (QMainWindow) 都落后于所有其他打开的 windows(互联网浏览器、资源管理器等)。这是标准行为吗?有什么办法可以防止这种情况发生吗?我试过了
// set always on top window
Qt::WindowFlags flags = this->windowFlags();
this->setWindowFlags(flags | Qt::WindowStaysOnTopHint);
但它导致文件对话框也位于主要 window.
后面已编辑: 这是调用文件对话框的代码片段(调用它的方法是我的 class 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;
}
QFileDialog::getOpenFileNames
的第一个参数不能是 nullptr
。设置成你的主window,一切就OK了。