1.Qt 之 QSS(样式表语法)
2.QSS 语法规则
3.认识QT——按钮控件
Qt 之 QSS(样式表语法)
Qt的源码样式表(QSS)语法与CSS非常相似,对于熟悉CSS的命名开发者来说,理解起来较为容易。规则QSS由一系列样式规则组成,源码每个规则由选择器和声明构成。命名例如,规则帝国cms 外挂源码规则`QPushButton { color: red }`指定了QPushButton及其子类(如MyPushButton)的源码前景色为红色。
QSS的命名大小写规则较为宽松,除类名、规则对象名和属性名外,源码其他部分不区分大小写。命名选择器之间通过逗号分隔,规则如`QPushButton,源码xtz源码 MyPushButton { color: red }`等同于三个独立规则。声明部分以属性值对形式呈现,命名如`color: red;`。规则
QSS支持CSS2定义的大部分选择器类型,包括但不限于类型选择器。为了精细控制复杂部件如QComboBox和QSpinBox,可以利用子控件选择器指定特定子部件的样式,如`QComboBox::drop-down { ... }`。子控件位置可通过`subcontrol-origin`和`subcontrol-position`属性调整。
伪选择器用于基于部件状态的应用规则,如`:hover`表示鼠标悬停状态。例如,`QPushButton:hover { color: white; }`。圈层源码如果需要应用否定伪状态,可以使用`!`,如`:not(:pressed)`。
在样式冲突中,选择器的特殊性决定优先级,如`QPushButton`比`QPushButton#okButton`更具体。解决冲突时,需要调整规则顺序或增加选择器的特殊性。
QSS遵循CSS2的级联规则,样式表在QApplication、父部件和子部件之间层层叠加。部件自身的jnd源码样式表优先于继承的样式表。
使用QSS时,注意部件不会自动从父部件继承颜色和字体,需要显式设置。对于命名空间中的自定义部件,类型选择器的`::`需替换为`-`以避免与子控件选择器冲突。
从Qt 4.3开始,可以使用qproperty-语法设置Q_PROPERTY。枚举属性应引用其常量名而非数值。
QSS 语法规则
Qt样式表(QSS)的语法规则与HTML CSS类似,对于熟悉CSS的开发者来说,学习起来相对容易。本文将详细解析QSS的养猪源码结构、选择器、声明、子控件、伪状态、冲突解决、级联和继承等内容。
QSS由一系列样式规则组成,每个规则由选择器和声明构成。选择器如QPushButton用于指定受规则影响的对象,声明如{ color: lightblue; }定义了属性值。Qt样式表大小写不敏感,但类名、对象名和Qt属性名需区分。
例如,规则`QPushButton { color: lightblue; }`指定QPushButton及其子类使用浅蓝色前景色。可以为一个声明指定多个选择器,如`QComboBox::drop-down, QSpinBox::up-button { ... }`。
Qt支持CSS2选择器,如子控件选择器`QComboBox::drop-down`,用于定制小部件的子元素。通过`subcontrol-origin`和`subcontrol-position`调整子控件的位置和大小。
冲突解决方面,使用选择器的特殊性(如ID、类、元素名称数量)来决定优先级。例如,`QPushButton#okButton`比`QPushButton`更具体,优先级更高。
级联规则允许小部件继承祖先样式,但子小部件样式优先。例如,应用样式表`color: red;`在QPushButton上会覆盖`QApplication`的全局设置。
继承在Qt中不同于CSS,小部件默认不继承字体和颜色,需要明确设置。如`QGroupBox { color: black; }`来影响子元素。
使用C++命名空间时,类型选择器需调整,如`QMyNamespace::MyWidget { ... }`。
最后,从4.3版本开始,可以使用`qproperty-`语法设置QObject属性,并正确引用枚举常量。
认识QT——按钮控件
创建初始QT程序时,点击新建项目,选择项目存放路径与命名,确保路径无中文,名称不包含空格。
项目命名规则需注意,避免使用中文字符与空白符号,路径同样应遵循这一原则。
默认情况下,程序会生成窗口类,名称为mvwidget,可从Qwidget,QMlainWindow,Dialogv中选择基类。
主函数中使用Qt5基本模块快捷键创建按钮,通过QT对象树实现。
自定义信号功能在QT中体现,开发者可自行设计信号。
自定义槽函数作为响应信号的处理机制,负责执行特定任务。
触发自定义信号使用emit关键字,将字符串转换为char*形式,可使用.toUtf8().data()实现。
当自定义信号与槽函数出现重载,为确保调用正确函数,需通过函数指针明确指向特定函数地址,特别是涉及到有参函数调用时。