Qt样式表是一个可以自定义部件外观的十分强大的机制﹐除了那些能够通过子类化QStyle更改的外观,其余的都可以使用Qt样式表来美化。

实现办法:调用setStyleSheet 函数,其中styleSheet一般通过读取配置文件.qss实现。

void setStyleSheet(const QString& styleSheet);

 QAboutDialog aboutdlg;QFile file("style.qss");file.open(QFile::ReadOnly);QString stylesheet = QString::fromLatin1(file.readAll());aboutdlg.setStyleSheet(stylesheet);

如style.qss文件如下

QPushButton
{
border-radius:5px;
background:rgb(150, 190, 60);
color:red;
font-size:15px;
}

样式表

每个样式规则由选择器( selector)声明( decla-ration)组成。

选择器类型

子控件

对于一些复杂的部件修改样式,可能需要访问它们的子控件,比如 QComboBox的下拉按钮,还有QSpinBox的向上和向下箭头等。选择器可以包含子控件来对部件的.特定子控件应用规则

QComboxBox::drop-down{image:url(dropdown.png);}
QSpiBox::up-button{image:url(up.png);}
QSpiBox::down-button{image:url(down.png);}

 伪状态

选择器可以包含伪状态来限制规则在部件的指定状态上应用。伪状态出现在选择器之后,用冒号隔离。

QPushButton:hover
{
border-radius:5px;
background:rgb(150, 190, 60);
color:red;
font-size:15px;
}

可以对伪状态取反。在伪状态前面加上!

QLineEdit:!read-only
{
background:rgb(150, 190, 60);
}

可以串联使用,即逻辑与计算。

QCheckBox:hover:checked
{color:red;
}

可以并联使用,即逻辑或计算

QCheckBox:hover,QCheckBox:checked
{color:red;
}

伪状态也可以和子控件联合使用

QComboBox :: drop- down: hover { image;url(dropdown_bright.png)}

状态    描述
:disabled    控件禁用
:enabled    控件启用
:focus    控件获取输入焦点
:hover    鼠标在空间上悬停
:pressed    鼠标按下
:checked    控件被选中
:unchecked    控件没有选中
:indeterminate    控件部分被选中
:open    控件
:closed    空间关闭
:on    控件可以切换,且处于on状态
:off    控件可以切换,且处于off状态
!    对以上状态的否定

冲突解决

1.特殊的选择器优先。因为QPushButton# okButton一般代表一个单一的对象,而不是一个类所有的实例,所以它比QPushButton更特殊,那么这时便会使用第一个规则,okButton的文本颜色为灰色。

2.有伪状态比没有伪状态优先。如果两个选择符的特殊性相同,则后面出现的比前面的优先。Qt样式表使用CSS2规范来确定规则的特殊性。

样式表可以设置在QApplication上、父部件上或者子部件上。部件有效的样式表是通过部件祖先的样式表和QApplication上的样式表合并得到的。当发生冲突时,部件自己的样式表优先于任何继承的样式表,同样,父部件的样式表优先于祖先的样式表。

属性

缺省情况下,margin、border、padding属性缺省为0.

通用的样式属性、值

样式-英文      参数        样式-中文
color:    white rgb(110,110,110) #eb7350    前景颜色,字体颜色
background:    transparent    背景为透明
background-color:    white rgb(110,110,110) #eb7350    背景颜色
background-position:    left right center top bottom    设定图片的位置
background-image:url()    ./img/back.jpg    背景图片 ,不缩放图片大小
border-image:url()    ./img/back.jpg    背景图片,会对图片进行拉伸,平铺
border-style:    outset inset    边框样式,按下是inset
border-width:    px    边框大小
border-radius:    px    边框弧度
border:3px solid red    px color    边框宽度以及颜色
border-color: rgba(255, 225, 255, 30);    color    边框颜色
font-family    微软雅黑    设定字体所属家族
font: bold 14px    bold px    字体大小并加粗
font-size:    px    字体大小
font-style:    inset    字体样式
font-weight:    px    字体深浅
selection-color:    color    设定选中时候的颜色

延伸:

Qt下常见的界面美化方法有以下集中:

1、使用QSS样式表

2、自定义控件自绘及setPalette

3、使用qml配置界面

但是以上几种都存在一些缺陷,主要是

1、使用QSS定制效果有效,比如想要做深度的定制就没法处理了

2、自绘控件需要对qt控件和绘制api有比较熟悉才能够做到

3、QML有比较高的学习成本,门槛有点高,并且熟悉使用c++的开发人员大多不愿意使用QML

qt 样式表 qss相关推荐

  1. Qt样式表(QSS)Demo:黑色扁平风格

    从昨天下午到现在整理了一天,有点遗憾是表头高亮时字体加粗没找到怎么修改,还有子菜单的小三角. 时间问题,Demo里只添加了我常用的控件,像QListView,QCalendarWidget等都没做. ...

  2. Qt样式表(QSS)Demo:黑色扁平加渐变

    (2019-1-3改进) 把上次的纯色背景加了点渐变,感觉好看了点. 关于颜色显示:有些电脑显示器设置偏亮/暗,可以调节下. 关于控件大小:标题高度30像素,控件高度28px. 关于字体大小:一般设置 ...

  3. Qt样式表之二:QSS语法及常用样式

    一.简述 Qt样式表(以下统称QSS)的术语和语法规则几乎和CSS相同.如果你熟悉CSS,可以快速浏览以下内容.不熟悉的话可以先去W3School - CSS或者本人的CSS博客随笔简单了解一下. 在 ...

  4. Qt 样式表之QSS

    前言 最近想给程序做个换皮肤的功能,于是想起了用 QSS.QSS 这个东西也算是老古董了,博主刚工作那会就有接触过,但是没有深入去了解,趁着这一次机会来学习一下.网上翻阅了一些资料,结合 Qt 的官方 ...

  5. Qt样式表之 QSS 语法介绍;QLineEdit、

    内容来自Qt样式表之 QSS 语法介绍-3YL的博客 Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件.Qt样式表的概念.术语和语法都受到了HTML的层叠样式表(Cascading ...

  6. 【Qt】Qt样式表总结(一):选择器

    官方资料 https://blog.csdn.net/u010168781/article/details/81868523 注释 qss文件中使用:/**/ 来注释 样式规则 样式表由样式规则序列组 ...

  7. Qt Style Sheets(qt样式表)

    我认为qt样式表对于专注于ui交互的人,其在qt的地位不亚于信号与槽的地位.通过qt样式表可以展示绝大部分你可以想象得到的风格. qt样式表的使用是先将要特例化的样式建立在后缀qss的文件中,在程序启 ...

  8. QT样式表(QStyleSheet)

    QT样式表 (QStyleSheet) 作者:刘旭晖 Raymond 转载请注明出处 Email:colorant@163.com BLOG:http://blog.csdn.net/colorant ...

  9. qt样式表设置边框_QT样式表

    QT样式表 一.QT样式表简介 1.QT样式表简介 QSS的主要功能是使界面的表现与界面的元素分离,使得设计皮肤与界面控件分离的软件成为可能. QT样式表是允许用户定制widgets组件外观的强大机制 ...

最新文章

  1. 【COCOS CREATOR 系列教程之二】脚本开发篇事件监听、常用函数等示例整合
  2. excel保存超过15位数据不变科学计数法的方法
  3. ubuntu16.04源码安装node
  4. 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
  5. 谷歌安卓之父离职内幕;抖音上线小程序;苹果被罚千万 | 极客头条
  6. Postman局部变量设置
  7. 【优化覆盖】基于matlab虚拟力算法求解无线网络传感覆盖优化问题【含Matlab源码 1187期】
  8. 在VBA中调用Windows API的方法
  9. 转:java工程师成神之路
  10. 计算机桌面截屏快捷键,关于电脑屏幕截图的快捷键是什么
  11. VUE和Element-UI下拉框select实现拼音,中文搜索
  12. 清华计算机系人工智能学院,CoAI - 清华大学交互式人工智能课题组
  13. OpenCV python 绘制椭圆形
  14. error An unexpected error occurred: “EPERM: operation not permitted, unlink ‘C:\\Users
  15. 计算机专业有哪些【含金量超高竞赛】?
  16. ChatGPT 插件清单(中文版)
  17. 国外云盘(如Rapidgator)免费下载姿势详解
  18. English:现在分词和过去分词的用法
  19. 机器学习3决策树算法模型
  20. cqyz oj | 单峰排列

热门文章

  1. selenium模块太强大了,网易云音乐都可下载
  2. matlab 交易模型,基于技术交易规则的动态模型股票价格(附论文和Matlab源程序)...
  3. 智能手机时代下躁动的灵魂
  4. 列举几个股市技术分析的公众号名称
  5. H5技术实现教程:多屏CSS动画精进技巧
  6. 【keil5】keil官网PACK包不显示的解决方案
  7. Cisco VPN出现Error 56的解决办法
  8. EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
  9. 切条机切带机中达优控定长送料触摸屏一体机程序 超声切带和热切都可以通用
  10. cdr存成html格式的文件格式,cad文件怎么转换成cdr格式