Qt5.15在Manjaro系统运行窗口程序出现QColor转换警告如何解决
警告原因
这个警告是Manjaro系统(多为搭载KDE Plasma桌面的版本)的全局主题配置异常与Qt 5.15的颜色解析逻辑不兼容导致的:
Qt在加载系统主题色值时,读取ForegroundNeutral(中性前景色)对应的配置值,期望获取R,G,B格式的合法颜色参数,而实际读取到的246We10XOSWT,116,0开头包含非数字字符,无法转换为整数型的颜色通道值,因此重复抛出转换失败警告。
你提交的代码本身没有逻辑错误,该问题属于系统环境和Qt适配的兼容问题。
修复方案
下面三种方案任选其一即可:
- 修改Qt平台主题适配规则
运行程序前在终端设置环境变量临时生效:
需先安装qt5ct配置工具:export QT_QPA_PLATFORMTHEME=qt5ctsudo pacman -S qt5ct,打开qt5ct配置好Qt主题后即可生效,也可以将上面的环境变量配置写入~/.bashrc或~/.zshrc实现全局永久生效。 - 修复系统主题的异常配置
打开系统设置→外观→颜色,切换为默认的Breeze颜色方案即可消除警告。如果需要保留自定义主题,可进入~/.local/share/color-schemes/目录找到你正在使用的主题配色文件,搜索ForegroundNeutral字段,将后面的参数修改为合法的RGB值,比如把246We10XOSWT,116,0修改为246,116,0即可。 - 代码层面屏蔽非致命警告
如果不影响程序功能、只想消除警告输出,可以在main函数初始化QApplication前添加一行代码关闭颜色相关日志:qputenv("QT_LOGGING_RULES", "qt.gui.color=off");
内容的提问来源于stack exchange,提问作者aszswaz
相关产品推荐
相关产品推荐

