设置默认QStyle
之前一直在做pyqt的开发,做出来一个界面之后,经常会发现在不同的国产操作系统上的显示有问题,比如UOS和麒麟V10系统上,经常会出现QTableWidget的行高不统一,或者是按钮样式不一致等等问题,之前一直是通过修改样式来解决,也一直没有深入思考。
直到今天再次出现QTableWidget的样式与开发环境不统一的问题,才意识到可能与系统的style设置有关,正好这次记录下此问题,以便自己加深记忆,并提供给阅读的人员以帮助。
系统style与Qstyle联系
qt本身有style模块用来设置整个应用程序的样式,同时也可以由用户来指定。大家看到不同的操作系统会呈现出不同的展示效果就是由系统的style控制的,当qt程序没有指定样式时,Qt会根据运行的桌面环境来选择合适的样式,因此就会出现在不同的界面上存在不同的展示样式的情形。
修改样式的方法
本次出现UI问题就是因为麒麟和UOS系统有自己的style,导致QTable的行间距不同出现的问题。
执行下列语句可以查看当前平台支持的QStyle的名称列表
from PySide2 import QtWidgets
print(QtWidgets.QStyleFactory.keys())
得出结果为:
['windowsvista', 'Windows', 'Fusion']
然后可以为程序设置固定的style,以实现不同界面有不同的展示效果,我这里设置为'windows'
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
# 固定默认的style为 Windows
style = QtWidgets.QStyleFactory.create('Windows')
app.setStyle(style)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_Form()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
这样就可以统一不同平台的样式,要注意的是有的平台可能不存在"Windows"这个样式,就需要适配多适配几个,判断使用。当然,如果有时间也可以自定义样式来实现style的统一,不过这样比较麻烦就是了,qss和paintEvent完全可以实现目的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)