前言
最近在用Qt写课程设计,把平时遇到的问题在这里记录一下
相关问题及解决
遇到的问题以及解决:
-
使用QMenu以及QInputDialog时背景为黑色,看不见字体:
解决方法:检查QMenu或者QInputDialog继承的父部件或者祖先部件中是否有设置过styleSheet为transparent,原因是子部件会继承父部件及祖先部件的transparent属性,背景显示为黑色,当然也可以在子部件中设置背景为白色; -
使用ID选择器QPushButton#buttonName时设置“不起作用”
buttonName在使用前需要调用setObjectName()显示指定类型名,不能直接使用实例名
Qt样式表设置
- Qt设置样式表可以用qss文件,也可以使用setStyleSheet,前期样式比较简单,所有下面的内容都是使用setStyleSheet的相关内容
- Qt可以在父部件与子部件都使用setStyleSheet,最终生成样式表的原则是:子部件样式表优先,特殊选择器优先(下面会介绍选择器)
- 子部件会继承父部件的样式表,父部件继承祖先的样式表,以此类推、、
- Qt样式表选择器
- 通用选择器 *,匹配所有部件
- 类型选择器QPushButton,匹配所有QPushButton实例及其子类
- 属性选择器QPushButton[flat = “false”],匹配QPushButton中属性falg为false的实例
- 类选择器.QPushButton,注意前面有个点号,匹配所有QPushButton实例但不包括其子类
- ID选择器QPushButton#buttonName,匹配所有QPushButton中以buttonName为对象名的实例
- 后代选择器 QDialog QPushButton ,匹配所有QPushButton实例,他们必须是QDialog的子孙部件
- 孩子选择器 QDialog>QPushButton,匹配所有QPushButton实例,他们必须是QDialog的直接子部件