Qt Qss 样式表总结

    使用qt 做界面开发近四年时间了,开发过程中避免不了需要自定义控件和自定义控件样式。下面对使用做一个完整的总结。

一、控件设置样式方法有:

1、通过 qt designer 里直接设置。 如下图。 

2、 通过代码动态设置

 

3、 通过样式表文件设置

 

优缺点比较:

方法优点        缺点

加载方式              

ui 设置设置后立马生效,所见即所得不能根据业务情况动态改变,不能批量实现换肤,修改需要修改ui 文件或代码代码加载
代码设置可根据业务动态设置,只要找到对应控件修改比较简单程序运行后才可查看效果,不能立即查看效果,不能批量实现换肤,后期修改需要改动代码代码直接加载
样式表文件可通过换样式表文件统一换肤,后期修改不用改动代码。程序运行后才可查看效果,不能立即查看效果,不能根据业务情况动态改变。开发中容易出问题,qss 文件中若无意多打字符都会使样式表中后部分失效。不易排查。项目较大且多人共用时存在互相覆盖或者难维护情况。通过代码读取样式表文件全量加载设置

4、设置的范围

       可通过类型设置同类控件该属性,也可以通过id 值对指定控件设置。

 总结:三种方法各有各自优势,但在实际项目开发中比较倾向于第三种,部分特殊业务需要第二种代码结合使用。 第一种比较常用的是在预研某个功能时比较适合。

二、 样式表的类型总结

  首先需要了解下qt  css 的盒子结构,这样才更好的设置对应的属性。

一个盒子模型由 content(内容)、border(边框)、padding(间隙)和margin(间隔) 这四个部分组成:

 

 实际开发过程中主要是对字体的基本属性和控件的边框、背景颜色等做自定义设置。

1、CSS文字属性:

color : #999999; /*文字颜色*/

font-family : 宋体,sans-serif; /*文字字体*/

font-size : 9pt; /*文字大小*/

font-style:itelic; /*文字斜体*/

font-variant:small-caps; /*小字体*/

letter-spacing : 1pt; /*字间距离*/

line-height : 200%; /*设置行高*/

font-weight:bold; /*文字粗体*/

vertical-align:sub; /*下标字*/

vertical-align:super; /*上标字*/

text-decoration:line-through; /*加删除线*/

text-decoration: overline; /*加顶线*/

text-decoration:underline; /*加下划线*/

text-decoration:none; /*删除链接下划线*/

text-transform : capitalize; /*首字大写*/

text-transform : uppercase; /*英文大写*/

text-transform : lowercase; /*英文小写*/

text-align:right; /*文字右对齐*/

text-align:left; /*文字左对齐*/

text-align:center; /*文字居中对齐*/

text-align:justify; /*文字分散对齐*/

vertical-align属性

vertical-align:top; /*垂直向上对齐*/

vertical-align:bottom; /*垂直向下对齐*/

vertical-align:middle; /*垂直居中对齐*/

vertical-align:text-top; /*文字垂直向上对齐*/

vertical-align:text-bottom; /*文字垂直向下对齐*/

2、CSS边框空白

padding-top:10px; /*上边框留空白*/

padding-right:10px; /*右边框留空白*/

padding-bottom:10px; /*下边框留空白*/

padding-left:10px; /*左边框留空白

3、CSS符号属性:

list-style-type:none; /*不编号*/

list-style-type:decimal; /*阿拉伯数字*/

list-style-type:lower-roman; /*小写罗马数字*/

list-style-type:upper-roman; /*大写罗马数字*/

list-style-type:lower-alpha; /*小写英文字母*/

list-style-type:upper-alpha; /*大写英文字母*/

list-style-type:disc; /*实心圆形符号*/

list-style-type:circle; /*空心圆形符号*/

list-style-type:square; /*实心方形符号*/

list-style-image:url(/dot.gif); /*图片式符号*/

list-style-position: outside; /*凸排*/

list-style-position:inside; /*缩进*/

4、CSS背景样式:

background-color:#F5E2EC; /*背景颜色*/

background:transparent; /*透视背景*/

background-image : url(/image/bg.gif); /*背景图片*/

background-attachment : fixed; /*浮水印固定背景*/

background-repeat : repeat; /*重复排列-网页默认*/

background-repeat : no-repeat; /*不重复排列*/

background-repeat : repeat-x; /*在x轴重复排列*/

background-repeat : repeat-y; /*在y轴重复排列*/

5、CSS框线一览表:

border-top : 1px solid #6699cc; /*上框线*/

border-bottom : 1px solid #6699cc; /*下框线*/

border-left : 1px solid #6699cc; /*左框线*/

border-right : 1px solid #6699cc; /*右框线*/

以上是建议书写方式,但也可以使用常规的方式 如下:

border-top-color : #369 /*设置上框线top颜色*/

border-top-width :1px /*设置上框线top宽度*/

border-top-style : solid/*设置上框线top样式*/

其他框线样式

solid /*实线框*/

dotted /*虚线框*/

double /*双线框*/

groove /*立体内凸框*/

ridge /*立体浮雕框*/

inset /*凹框*/

outset /*凸框*/

6、伪状态属性

:checked    button部件被选中
:disabled    部件被禁用
:enabled    部件被启用
:focus    部件获得焦点
:hover    鼠标位于部件上
:indeterminate    checkbox或radiobutton被部分选中
:off    部件可以切换,且处于off状态
:on    部件可以切换,且处于on状态
:pressed    部件被鼠标按下
:unchecked    button部件未被选中

7、 combox 等复杂控件内部的子部件属性列表

::down-arrow         /*combo box或spin box的下拉箭头*/ 
::drop-down          /*combo box的下拉箭头*/ 
 
::indicator      /*checkbox、radio button或可选择group box的指示器*/ 
::item               /*menu、menu bar或status bar的子项目*/ 
::menu-indicator     /*push button的菜单指示器*/ 
::title              /*group box的标题*/ 
 
::down-button        /*spin box的向下按钮*/
::up-arrow           /*spin box的向上箭头*/ 
::up-button          /*spin box的向上按钮*/
 

8、样式表中默认的标准颜色:

17种标准色:aqua, black, blue, fuchsia, gray, green, lime, maroon, navy,olive, orange, purple, red, silver, teal, white, yellow

三、 学习和资料查询地方

1、首先百度或google 搜索是否有所需要的例子。

2、查看 qt 助手里的相关资料和相关例子 或在线查看官网样式表  https://doc.qt.io/qt-5/stylesheet-reference.html

 

 3、日常通过designer  里的ui文件可视化多动手设置和编写代码尝试,最重要的是通过不断学习总结经验。 日常遇到的问题资料不一定能查到或者当时能查到,如果有同事则要多询问相关开发同事是否有类似案例或者经验。没有则多尝试或想其他办法组合达到效果。

参考文章:

https://blog.csdn.net/qq_40602000/article/details/104652131

https://blog.csdn.net/u011471873/article/details/92400144

https://zhuanlan.zhihu.com/p/103673984

https://blog.csdn.net/qq_40602000/article/details/104652131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值