簡體   English   中英

如何在Qt5中獲得系統QFileDialog?

[英]How do I get the system QFileDialog in Qt5?

我創建了文件對話框來選擇Qt應用程序中的文件。 遷移到Qt5時遇到回歸,當鏈接Qt5而不是Qt4時,文件對話框更差:

Qt4的

Qt4文件對話框

QT5

Qt5文件對話框

例如,用戶很難導航到網絡安裝的共享目錄。

代碼就像這樣簡單:

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那么我得到這個:

在此輸入圖像描述

以下在Ubuntu 16.04上適用於我 - 它更像是一種解決方法,而不是一個實際的解決方案:

編輯:首先確保已安裝包libqt5libqgtk2 它為Qt5帶來了GTK2綁定。 如果未安裝軟件包,文件選擇器將類似於上面問題中顯示的最后一個屏幕截圖。

然后,假設您要從終端啟動應用程序my_app ,請按以下方式啟動它(請注意=之后的空格):

$ QT_QPA_PLATFORMTHEME= my_app

這是因為,根據啟動 appmenu-qt5錯誤報告 ,Ubuntu軟件包appmenu-qt5似乎存在問題:軟件包強制Qt5對話框變為非本機,這是通過/etc/profile.d/appmenu-qt5.sh顯式設置QT_QPA_PLATFORMTHEME=appmenu-qt5 /etc/profile.d/appmenu-qt5.sh 在啟動應用程序之前通過QT_QPA_PLATFORMTHEME=取消設置平台主題會在本地更改此行為。

編輯:但是,使用所描述的方法時,全局菜單可能無法在my_app

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM