我目前正在使用Qt 5.6创建一个GUI,我想让用户打开一个文件。我在我的主窗口类中使用以下代码执行此操作:
#include <QFileDialog>
...
void MainWindow::loadScene()
{
QString loadPath = QFileDialog::getOpenFileName(this,
tr("Choose a scene file"), QString("."),
tr("Scene files (*.keyScene)"));
if(!loadPath.isEmpty())
resourceManager->loadScene(loadPath.toStdString());
}
我得到以下对话框:
Screenshot of open file dialog
我使用的系统是Ubuntu 16.04,我也在Ubuntu 14.04和Mint 17.3上测试过。我得到了完全相同的结果。
当我在Windows中编译项目时,一切正常。
修改
有人建议我在创建文件对话框时使用DontUseNativeDialog标志,我可以使用以下代码获得一个有效的Qt样式文件对话框:
QFileDialog dialog(this);
dialog.setAcceptMode(QFileDialog::AcceptOpen);
dialog.setOption(QFileDialog::Option::DontUseNativeDialog, true);
if(!dialog.exec())
return;
所以问题实际上是为什么原生文件对话框没有正确呈现。