我创建了文件对话框来选择Qt应用程序中的文件。迁移到Qt5时遇到回归,当链接Qt5而不是Qt4时,文件对话框更差:
例如,用户很难导航到网络安装的共享目录。
代码就像这样简单:
QString path;
path = QFileDialog::getExistingDirectory(this, tr("Pick a file"));
QFileDialog::DontUseNativeDialog
不会改变任何内容。
我的操作系统是Ubuntu 16.04,我安装了nautilus(3.14.3)和nemo(2.8.7)。 nemo配置为默认文件管理器:
xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search
其他每个应用程序似乎都使用与Qt4文件对话框截图相同的对话框。
如何在Qt5中获取“旧”文件对话框?
如果我尝试使用QT_QPA_PLATFORMTHEME= ./my_app
,那么我就明白了:
答案 0 :(得分:4)
以下在Ubuntu 16.04上对我有用 - 但它更像是一种解决方法而不是实际解决方案:
修改:首先确保已安装包libqt5libqgtk2
。它为Qt5带来了GTK2绑定。如果未安装软件包,文件选择器将类似于上述问题中显示的最后一个屏幕截图。
然后,假设您要从终端启动应用程序my_app
,请按以下方式启动它(请注意=
之后的空格):
$ QT_QPA_PLATFORMTHEME= my_app
这是因为,根据bug report on launchpad,Ubuntu包appmenu-qt5
似乎存在问题:包强制Qt5对话框变为非原生的,作为显式设置的副作用{ {1}}通过QT_QPA_PLATFORMTHEME=appmenu-qt5
。在启动应用程序之前通过/etc/profile.d/appmenu-qt5.sh
取消设置平台主题会在本地更改此行为。
修改:但是,使用所述方法时,全局菜单可能无法在QT_QPA_PLATFORMTHEME=
中使用。