QSS(Qt样式表)概念
创始人
2024-01-25 20:35:44
0

Qt样式表是一个可以自定义部件外观的十分强大的机制,除了QStyle更改的样式,其他的都可以由QSS修改。由于受到Html的CSS启发,所以叫QSS。

  • 代码添加样式表
  • ui界面上添加样式表

代码添加样式表:

setStyleSheet()添加样式表

在ui界面中添加两个控件:pushButton 和lineEdit 

 修改两个部件的背景颜色:

    ui->pushButton->setStyleSheet("background:blue");ui->lineEdit->setStyleSheet("background:yellow");

 修改同一类控件的方法:

格式为:   控件类名 {   内容   }

QPusgButton{background:blue}
QLabel{background:yellow}

ui界面中的使用:

右键点击对象,点击改变样式表

 

 可以根据上面的选项添加内容:


 Qt样式表的语法:

一:样式规则

每个样式由选择器和声明组成

  • 选择器可以有多个用,隔开
  • 样式表可以不区分大小写:  color   Color  COLOR 都可以使用,但类名、对象名和Qt属性名区分大小写
  • 样式中的属性用;隔开

QPushButton {color:red}

  • QPushButton为选择器
  • {color:red} 声明
  • color为属性
  • red为值
QPushButton
{
color:red//等价于Color:red  COlor:rad  例如color,background等不区分大小写
}QPushButton,QLabel,QLineEdit//多个选择器用,隔开
{
color:red;//多个的话用;隔开
background-color:white
}

二:选择器的类型 

选择器示例说明
通用选择器*匹配所有部件
类型选择器QPushButton匹配所有QPushButton实例和它的所有子类
属性选择器QPushButton[flat="false"]匹配QPushButton的属性flat为false的实例
类选择器.QPushButton匹配所有QPushButton实例,但不包含它的子类
ID选择器QPushButton#button匹配QPushButton中名为button的实例
后代选择器QDialog QPushButton匹配所有QPushButton实例,但必须为QDialog的子孙部件
孩子选择器QDialog >QPushButton匹配所有QPushButton实例,但必须为QDialog的直接子部件

三:子控件

QComboBox::drop-down{.....}

  • drop-down 代表上下箭头
  • 使用::来连接子控件
在帮助文档中搜索  Qt Style Sheets Reference  搜索更多子控件

四:伪状态

常用的伪状态:

:checked该项目已选中
:unchecked该项目未选中
:disabled该项目已禁用
:editableQComboBox可编辑
:edit-focus具有编辑焦点
:focus输入焦点
:hover鼠标悬停在项目上
:read-only只读
:pressed鼠标按下
  • 伪状态:在放在选择器之后用:隔开
  • 伪状态可以使用  !来表示否定
  • 可以使用多个伪状态(与的效果)   :hover:pressed()
  • 用,连接可以达到(或的效果)
  • 伪状态可以和子控件一起使用
QPushButton:hover//鼠标悬停
{
color:red
}
QPushButton:!hover//鼠标不悬停
{
color:red
}
QPushButton:hover:preassed//鼠标悬停且鼠标点击
{
color:red
}
QPushButton:hover,QPushButton:preassed//鼠标悬停或鼠标点击
{
color:red
}
QComboBox::drop-down:preassed//子控件和鼠标悬停
{
color:red
}

五:冲突的解决

解决方法为:

  • 特殊的选择器优先
  • 有伪装比没伪装优先
  • 特殊性相同,后出现的优先
  • 当父类和本身都有样式表并有冲突时,优先使用本身的样式表

 六:继承关系

使用样式表时,部件并不会自动从父部件继承字体和颜色设置

想要继承到子部件需要这样设置样式表。

假设 QPushButton是QGroupBox的一个子部件//这样的话颜色会设置到所有子部件
//注意*前面有一个空格
QGroupBox,QGroupBox * 
{
color:red;
}

 七:设置QObject属性

在Qt4.3之后,任何可设计的Q_PROPERTY都可以使用"qproperty-属性名称”语法来设计样式表。

QPushButton{qproperty-pixmap:url(.....)}
Qlabel{qproperty-iconSize:20px 20px;}

 

相关内容

热门资讯

金砖国家领导人第十七次会晤发表...   当地时间7月6日,金砖国家领导人第十七次会晤发表里约热内卢宣言,主题为“加强全球南方合作,推动更...
打造暑期消费新场景 助力文旅产...   央视新闻客户端消息(新闻联播):进入暑期,各地立足资源特色,积极打造消费新场景,推动文旅产业高质...
青岛一海归农村创业青岛创业农业... 半岛记者王永端育苗不是在塑料大棚内,而是在4万平方米的大型玻璃房内;点种不是常规的人工,而是由自动穴...
2019年创业好项目排行榜 2... 2019年创业好项目排行榜不过创业有风险,投资需谨慎。选择对的趋势,顺应正确的趋势然后赚到自己的创业...
2019年创业投资什么项目比较... 创业投资会给人们带来很大的市场,会给人们带来更加美好的生活。那么,2019年创业投资什么项目比较好?...
大家都创业哪来项目 大家都创业... 对于大多数高校创业社团来说,创业想法都有,但合适的创业项目难找;创业团队都有,但创业方向难找.......
想知道大家都想在哪方面创业,有... 这个问题注定得不到你想要的结果:其一、每个行业都有失败的公司和成功的公司。每天都有奶茶店咖啡馆开业又...
2018创业好项目排行榜(农村... 创业投资好项目有很多,说到冷门暴利行业,不禁让人想到低成本高回报,坐拥爆发式机会,有大把大把的银子赚...
目前一个人想开店创业 适合一人... 这是一个粉丝的问题,目前想一个人开店创业。一个人开店,不用过多考虑合伙人的资金收益,也不用考虑日常的...