Qt入门-Style Sheet样式表和2D绘图课件

上传人:我*** 文档编号:147632765 上传时间:2020-10-11 格式:PPT 页数:26 大小:140KB
返回 下载 相关 举报
Qt入门-Style Sheet样式表和2D绘图课件_第1页
第1页 / 共26页
Qt入门-Style Sheet样式表和2D绘图课件_第2页
第2页 / 共26页
Qt入门-Style Sheet样式表和2D绘图课件_第3页
第3页 / 共26页
Qt入门-Style Sheet样式表和2D绘图课件_第4页
第4页 / 共26页
Qt入门-Style Sheet样式表和2D绘图课件_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Qt入门-Style Sheet样式表和2D绘图课件》由会员分享,可在线阅读,更多相关《Qt入门-Style Sheet样式表和2D绘图课件(26页珍藏版)》请在金锄头文库上搜索。

1、Qt入门,Style Sheet和2D绘图,Style Sheet样式表单,Qt的样式表单允许我们在对程序不做任何代码上的更改的情况下轻松改变应用程序的外观。 其思想来源于网页设计中的CSS(Cascading Style Sheet),即可以将功能设计和美学设计分开。 它的语法和概念和HTML CSS也是差不多的。,基本语法,样式表单由一系列样式规则组成。每条规则可以分成两部分:选择器和声明 QPushButton color: red 选择器表示规则作用到哪些控件上;声明则详细说明了是什么规则。 这条规则让所有的按钮的字体都变成红色。,选择器(selector),声明(declaratio

2、n),基本语法,Qt的样式表语法不区分大小写,所以color,Color,coLor,coloR都表示同样的颜色属性。 但是指代类的类名的时候,是区分大小写的。 多个选择器可以并列使用,它们之间用逗号隔开,例如: QPushButton, QLineEdit, QComboBox color: red ,基本语法,声明部分也可以有多个并列,之间用分号隔开。当我们要设置的选择器有多个属性的时候,就需要并列多个声明,例如: QPushButton color: red; background-color: white 这条样式规则让按钮的字体变成红色,同时背景色变成白色。,选择器类别,Qt样式表单

3、支持所有在CSS2中定义的选择器类型,下面介绍几种最为常用的选择器定义。,选择器类别,属性选择器 可用于Qt中所有具有toString方法的属性,例如QPushButton的text、checked等属性。 class属性略有特殊,它不代表一个类的具体属性,它表示类名。 当属性是一个QStringList时,可以用=这个符号来匹配其中的某一项。 因为属性往往是动态的,当属性更改了的时候,需要调整样式表,通常做法是删除样式表,再重新加载,选择器类别,精细控制,当控件相对比较复杂时,仅仅对其进行控制是不够的,还需要能够对其子部件进行控制,例如QComboBox的下拉点击按钮: QComboBox:

4、drop-down image: url(dropdown.png) ,drop-down button,精细控制,width和height属性可以控制sub-control的大小。当我们设置sub-control的图片时,也间接设置了它的大小。 更多的sub-control可以参考Qt的帮助文档中List of Sub-Controls部分。 注意,对于像QComboBox和QSpinBox这些控件,如果你设置了它的Sub-Control的一个属性,那么其他所有的属性你都需要设置,否则会看上去不太美观。,伪状态Pseudo-States,根据具体控件的状态不同,选择器也可以有不同的状态,依次

5、对应控件在不同状态的现实效果,我们称之为伪状态pseudo-state。 伪状态和选择器类名之间,用一个冒号分隔。例如: QPushButton:hover color: white 上面这条规则表示当鼠标悬停在按钮上时,其上文字显示为白色。,伪状态Pseudo-States,伪状态也可以反向选择,例如当我们要设置除了鼠标悬停状态外其他所有状态的字体颜色,则可以像下面这样设置: QRadioButton:!hover color: red 同时,伪状态也可以并列,之间用冒号连接,表示伪状态之间用AND计算: QCheckBox:hover:checked color: white QPushB

6、utton:hover:!pressed color: blue; ,伪状态Pseudo-States,如果需要,伪状态之间可以用OR计算: QCheckBox:hover, QCheckBox:checked color: white 伪状态可以和我们之前讲的精细控制sub-control合起来使用: QComboBox:drop-down:hover image: url(dropdown_bright.png) ,冲突解决,在定义样式表的时候,会遇到定义冲突的情况,例如: QPushButton#okButton color: gray QPushButton color: red 我们

7、将object name是okButton的QPushButton的字体颜色定义为灰色,但是我们又将所有的QPushButton的字体颜色定义为灰色,那okButton的颜色到底变成什么了?,冲突解决,这里我们引进选择器里的一个重要概念,就是选择器的特化以及特化程度(specificity) 在上一个例子中,第一条规则要比第二条规则特化程度要高,因为第二条规则适用于所有的QPushButton,而第一条规则通常只适用于一个QPushButton。 控件将首先应用特化程度高的规则,然后再是特化程度较低的,以此类推。,冲突解决,当一个选择器中有伪状态修饰,则认为该选择器也有相对较高的特化程度: Q

8、PushButton:hover color: white QPushButton color: red 上面的两条规则定义了一半的QPushButton的字体颜色为红色,但是当鼠标悬停的时候,字体颜色变为白色。,冲突解决,但是当特化程度一样的时候,冲突仍然存在: QPushButton:hover color: white QPushButton:enabled color: red 当鼠标悬停在一个有效的按钮上的时候,按钮颜色将变成什么? 由于hover和enabled具有同样的特化程度,所以enabled将覆盖hover的设置,当鼠标悬停在按钮上时,显示红色。,冲突解决,所以当我们需要设

9、置有效的按钮在鼠标悬停状态下的字体颜色,就需要将两条语句位置互换: QPushButton:enabled color: red QPushButton:hover color: white 或者我们也可以使用并列特化的方式: QPushButton:hover:enabled color: white QPushButton:enabled color: red ,冲突解决,还有一种容易引起误解的情况: QPushButton color: red QAbstractButton color: gray QPushButton是QAbstractButton派生出来的子类,是否第一条语句的特

10、化程度比第二条语句高?,冲突解决,注意,Qt样式表定义中,类继承之间具有一样的特化程度,所以上面的规则将所有的QAbstractButton的字体设置为灰色,包括QPushButton,因为QPushButton继承自QAbstractButton。 我们可以调整上面两条语句的相对位置来达到我们的设计目的。,特化程度计算方法,选择器特化程度计算方法如下: 计算设置ID的个数(=a) 计算其他属性的个数(=b) 计算元素名字的个数(=c) 忽略精细控制语句(sub-control) 连接a-b-c三个数字,就是计算所得的特化程度。,特化程度计算方法,样式层叠,Qt样式表单可以在Qapplicat

11、ion上设置,或者在父窗口上设置,或者直接在子控件上设置。最底层子控件的样式表是将所有其祖先或者Qapplication的样式表单合并起来,作为其最终的样式表单。 当合并后冲突发生时,子控件自身的样式表单总是要优先于其父类、祖类的样式表单,父类的样式表单优于祖类以此类推。,样式层叠,例如,当我们通过QApplication设置全局样式表单时,所有的QPushButton的字体都变成白色: qApp-setStyleSheet( QPushButton color: white ); 当我们再设置一个特定按钮的字体颜色时: myPushButton-setStyleSheet( * color:

12、 blue ); 该样式将覆盖Qapplication对该按钮的设定。,样式继承,在CSS中,子类的样式可以从父类中继承下来,但是在Qt样式规则中,子QWidget是不会从父QWidget中继承样式表的。 例如,架设一个QPushButton在QGroupBox内,则我们在QApplication中设置QGroupBox的样式表: qApp-setStyleSheet( QGroupBox color: red; );,样式继承,但是,在QGroupBox内的QPushButton并不会继承QGroupBox的样式表。 如果我们需要设置QPushButton的样式表,则需要显式地去设置它: qApp-setStyleSheet( QGroupBox, QGroupBox * color: red; );,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号