建设专业网站价格,东莞地铁线路图,md短视频传媒免费版怎么下载,河北哪里在建设当你在Deepin或UOS 上开发 Qt 程序时#xff0c;如果涉及到文件对话框功能#xff0c;那么就会遇到调用原生窗口的问题。
如果你使用的是官方的Qt版本#xff0c;那么在Deepin或者UOS系统上#xff0c;弹出的文件对话框会是如下这样#xff1a; 而Deepin或UOS系统提供的默…当你在Deepin或UOS 上开发 Qt 程序时如果涉及到文件对话框功能那么就会遇到调用原生窗口的问题。
如果你使用的是官方的Qt版本那么在Deepin或者UOS系统上弹出的文件对话框会是如下这样 而Deepin或UOS系统提供的默认对话框 可以看到Qt自身提供的对话框太丑与系统的UI风格不搭不协调。所以有没有什么办法能够使得Qt弹出的文件对话框是Deepin 或 UOS风格呢
为了能实现Deepin 或 UOS系统风格的文件对话框有以下方案 使用DTK开发 DTKDevelopment ToolKit是UOS基于 Qt 开发的一整套简单且实用的通用开发框架不过使用DTK将不能跨平台同时依赖很多。 使用qt5integration库 qt5integration 用于Deepin桌面环境的Qt平台主题集成插件。它包含多个QT5插件以使DDE更加QT5应用程序友好。但是qt5integration依赖很多依赖于DTK编译DTK是一件很痛苦的事情无法作为独立的库使用。 Deepin/UOS 自带的Qt UOS自身维护了Qt 5.13的版本并做了UOS风格化处理及相关优化。但由于UOS系统自带的Qt版本太低与Qt 5.15.2 以上版本兼容性很差且失去了跨平台能力所以不考虑使用UOS维护的Qt版本。Deepin的Qt版本为5.15版本较新但同样不能跨平台所以也不考虑。
综上以上方案都不是最佳选择。
最佳解决方案
Deepin-QFileDialog 项目基于qt5integration进行的魔改去掉了DTK等依赖能够直接编译使用完全独立的库开箱即用并且不需要更改任何代码。
通过Qt插件机制实现用于 Qt 弹出 Deepin 或 UOS 风格的文件对话框的功能。
https://github.com/L-Super/Deepin-QFileDialog
下载代码
git clone https://github.com/L-Super/Deepin-QFileDialog.git编译
mkdir build cd build
cmake ..
make -j8生成libqdeepin.so动态库路径
build/plugins/platformthemes/libqdeepin.so使用
将生成的 libqdeepin.so 动态库拷贝到 Qt platformthemes 目录下这样在 Qt Creator运行程序时弹出的文件对话框就是Deepin/UOS风格的对话框。
/home/Leou/Qt/5.15.2/gcc_64/plugins/platformthemes/示例代码
#include QApplication
#include QFileDialogint main(int argc, char *argv[])
{QApplication a(argc, argv);QFileDialog dialog;dialog.exec();return a.exec();
}效果 打包发布程序时将libqdeepin.so放入安装包结构目录 plugins/platformthemes下即可
├── lib
├── plugins
│ ├── bearer
│ ├── iconengines
│ ├── imageformats
│ ├── platforminputcontexts
│ ├── platforms
│ ├── platformthemes
│ └── xcbglintegrations
└── translations