Qt的Qss用法小结

 更新时间:2023年06月06日 10:00:04   作者:IT观察者  
Qt的Qss是一种用于定义用户界面的样式表语言,本文主要介绍了Qt的Qss用法小结,非常具有实用价值,需要的朋友可以参考下

Qt 的 Qss 是一种用于定义用户界面的样式表语言。它可以用来定义控件的颜色、字体、边框、背景等样式,可以很方便的实现自定义的样式效果。

Qss 的基本语法和 CSS 类似,主要是由选择器和样式属性构成。

选择器

选择器用来指定要样式化的控件,选择器可以使用控件的名称、类型、ID、类、父子关系等来进行定位。常见的选择器有:

  • 类型选择器: QPushButton
  • 类选择器: .mybutton
  • ID 选择器: #mybutton
  • 属性选择器: QWidget[enabled="false"]
  • 父子选择器: QListWidget > QListWidgetItem

样式属性

在 Qt 的 Qss 中,样式属性可以分为两类:控件属性和子控件属性,其中控件属性用于设置控件自身的样式,子控件属性用于设置控件的子控件的样式。

常用的控件属性和样式如下:

样式属性描述
background控件背景色
border控件边框
color控件文本颜色
font-size控件字体大小
font-family控件字体
padding内边距
margin外边距
text-align控件文本对齐方式
text-indent控件文本缩进
opacity控件透明度

常用的子控件属性和样式如下:

样式属性描述
QScrollBar:vertical竖向滚动条
QScrollBar:horizontal横向滚动条
QScrollBar::handle滚动条滑块
QScrollBar::add-page滚动条向后翻页按钮
QScrollBar::sub-page滚动条向前翻页按钮
QScrollBar::add-line滚动条向后滚动按钮(小箭头)
QScrollBar::sub-line滚动条向前滚动按钮(小箭头)
QComboBox QAbstractItemView下拉框的列表视图
QComboBox QAbstractItemView::item下拉框的列表项

示例

下面是一个简单的 Qss 样式示例:

QPushButton {
  background: #00bfff;
  color: #fff;
  border: 2px solid #fff;
  font-size: 24px;
  padding: 4px 8px;
  margin: 4px;
}
QLineEdit {
  background: #fff;
  color: #000;
  border: 2px solid #00bfff;
  padding: 4px 8px;
  margin: 4px;
}
QComboBox QAbstractItemView {
  background: #fff;
  color: #000;
  border: 2px solid #00bfff;
  padding: 4px 8px;
  margin: 4px;
}
QComboBox QAbstractItemView::item {
  background: #00bfff;
  color: #fff;
  font-size: 18px;
  padding: 4px 8px;
  margin: 4px;
}
QScrollBar:vertical {
  background: #fff;
  width: 16px;
  margin: 4px;
}
QScrollBar::handle:vertical {
  background: #00bfff;
  border-radius: 8px;
  margin: 2px;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
  background: none;
}
QScrollBar:horizontal {
  background: #fff;
  height: 16px;
  margin: 4px;
}
QScrollBar::handle:horizontal {
  background: #00bfff;
  border-radius: 8px;
  margin: 2px;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
  background: none;
}

上面的样式将会应用到 QPushButton、QLineEdit、QComboBox、QScrollBar 等控件上,并且可以看到各个控件的样式都是不一样的。其中,QComboBox 还设置了下拉列表视图及列表项的样式。

除了上述基本语法外,Qt 的 Qss 还有一些高级特性。

伪状态和伪元素

Qss 支持控件的伪状态和伪元素,用来描述控件处于特定状态时的样式。常见的状态包括:hover(鼠标悬停时)、pressed(鼠标按下时)、checked(选中状态)、disabled(不可用状态)等。

样式示例:

QPushButton:hover {
  background: #1e90ff;
}
QPushButton:checked {
  color: #ff4500;
}

尺寸和单位

Qss 支持不同的尺寸和单位来定义样式,包括像素(px)、绝对长度(cm、mm、in、pt、pc)、相对长度(em、ex、rem)、百分比(%)等,用于实现不同尺寸的控件效果。

QPushButton {
  width: 100px;
  height: 30px;
}
QLabel {
  font-size: 1.5em;
}
QTextEdit {
  padding: 0.5rem;
}
QComboBox {
  width: 50%;
}

颜色和图像

Qss 支持使用颜色和图像来定义控件的背景,边框和文本颜色等样式。

颜色示例:

QWidget {
  background-color: red;
}
QPushButton {
  color: white;
  background-color: rgb(0, 255, 0);
}
QLineEdit {
  border: 1px solid #ccc;
}
QLabel {
  color: black;
  background-color: rgba(255, 255, 0, 0.5);
}

图像示例:

QPushButton {
  border-image: url(button.png) 5 5 5 5 stretch;
}
QLabel {
  background-image: url(background.png);
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
QTextEdit {
  background-image: url(paper.jpg);
  background-attachment: fixed;
}

动画效果

Qss 还支持使用动画效果来实现控件的动态样式,通过 @keyframes 和 animation 实现。

样式示例:

QPushButton:hover {
  animation: pulse 0.5s;
}
@keyframes pulse {
  0% {background-color: #1e90ff;}
  50% {background-color: #00bfff;}
  100% {background-color: #1e90ff;}
}

总结

到此这篇关于Qt的Qss用法小结的文章就介绍到这了,更多相关Qt Qss内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入浅析C/C++ 的条件编译

    深入浅析C/C++ 的条件编译

    条件编译是指预处理的时候根据条件编译的指令有条件的选择源程序中的一部分代码送给编译器进行编译,进行有选择性的操作,防止宏替换的内容重复包含,这篇文章主要介绍了C/C++ 的条件编译,需要的朋友可以参考下
    2022-04-04
  • Visual studio2022 利用glfw+glad配置OpenGL环境的详细过程

    Visual studio2022 利用glfw+glad配置OpenGL环境的详细过程

    这篇文章主要介绍了Visual studio2022 利用glfw+glad配置OpenGL环境,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C语言实现从文件读入一个3*3数组,并计算每行的平均值

    C语言实现从文件读入一个3*3数组,并计算每行的平均值

    今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C++实现车票管理系统

    C++实现车票管理系统

    这篇文章主要为大家详细介绍了C++实现车票管理系统,连接数据库MySQL,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 使用C语言调用luajit的方法详解

    使用C语言调用luajit的方法详解

    C语言是一种非常流行的编程语言,而Lua是一种基于C语言开发的脚本语言,在Lua的各种实现中,luajit也是其中一种非常流行的实现,在本文中,我将为大家介绍如何使用C语言调用luajit,并且详细介绍如何传入参数,传入结构体参数,以及获取返回值
    2023-11-11
  • C语言实现计算三角形的面积的示例

    C语言实现计算三角形的面积的示例

    文章介绍了如何使用C语言计算三角形的面积,通过键盘输入三角形的三条边长,并使用海伦公式计算面积,示例数据a=2,b=3,c=2时,计算结果为1.984313
    2025-12-12
  • C++实现八个常用的排序算法 插入排序、冒泡排序、选择排序、希尔排序等

    C++实现八个常用的排序算法 插入排序、冒泡排序、选择排序、希尔排序等

    这篇文章主要介绍了C++如何实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序,需要的朋友可以参考下
    2015-07-07
  • Opencv实现联合双边滤波

    Opencv实现联合双边滤波

    这篇文章主要为大家详细介绍了Opencv实现联合双边滤波,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C语言中四种取整方式,取余/取模运算以及负数取模问题详解

    C语言中四种取整方式,取余/取模运算以及负数取模问题详解

    这篇文章主要介绍了C语言中四种取整方式及负数取模问题,包括了算法的分析与改进,是很多程序设计竞赛中常见的算法,需要的朋友可以参考下
    2021-09-09
  • C语言中程序环境和预处理的详细图文讲解

    C语言中程序环境和预处理的详细图文讲解

    这篇文章主要给大家介绍了关于C语言中程序环境和预处理的相关资料,我们写的C语言代码,从运行,到在屏幕上生成结果,经历了比较复杂的过程,需要的朋友可以参考下
    2023-02-02

最新评论