Qt 5.12.11 如何使用Gtk2主题实现原生界面显示效果
解决方案
- 首先排查Qt插件搜索路径不匹配问题:你安装的
qt5-style-plugins默认会放在系统自带Qt的插件目录下,如果你开发用的是Qt官网下载的独立安装包、自行编译的Qt版本,其默认插件搜索路径不包含系统插件目录,就会识别不到gtk样式插件。 - 第一步先打印当前Qt运行时的插件搜索路径,确认问题:
qDebug() << QCoreApplication::libraryPaths();
- 若输出路径不包含系统Qt样式插件的存放路径(通常为
/usr/lib/x86_64-linux-gnu/qt5/plugins/styles/,不同架构、发行版路径可能略有不同),可任选以下一种方式修复:- 手动拷贝系统
styles目录下的libqgtk3style.so、libqgtk2style.so文件到你当前使用的Qt安装目录下的plugins/styles/路径,没有styles文件夹就手动新建 - 启动程序前先设置环境变量指定插件搜索路径:
export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins:$QT_PLUGIN_PATH- 在代码中
QApplication初始化之前,手动添加插件搜索路径:
QCoreApplication::addLibraryPath("/usr/lib/x86_64-linux-gnu/qt5/plugins"); - 手动拷贝系统
- 配置完成后再次运行
qDebug() << QStyleFactory::keys();,确认输出已包含gtk3/gtk2字段后,再执行设置样式的代码即可生效。 - 额外注意事项:
- 若你使用Wayland桌面环境,需要额外安装
qtwayland5相关依赖包,避免样式加载异常 - 若需要打包发布程序,要将对应的gtk样式插件一同打包到程序目录下的
plugins/styles路径,否则在其他设备运行时仍无法加载对应主题
- 若你使用Wayland桌面环境,需要额外安装
内容的提问来源于stack exchange,提问作者SpaghettiChef
相关产品推荐
相关产品推荐

