• Qt QSS美化 基础知识


    二、QSS加载方式

    方式一:

    1 myDialog->setStyleSheet("QLineEdit { background-color: yellow }");
    2 nameEdit->setStyleSheet("background-color: yellow");

    方式二:

    1 QFile file(":/qss/main.qss");
    2 file.open(QFile::ReadOnly);
    3 QTextStream filetext(&file);
    4 QString stylesheet = filetext.readAll();
    5 this->setStyleSheet(stylesheet);
    6 file.close();

    三、QSS选择器类型

    3.1 通配选择器

    *  

      匹配所有的控件


    3.2 类型选择器

    QPushButton

      匹配所有QPushButton和其子类的实例

    QPushButton {background: gray;}

    3.3 属性选择器

    QPushButton[flat="false"]

       匹配所有flat属性是false的QPushButton实例,注意该属性可以是自定义的属性,不一定非要是类本身具有的属性

    QPushButton[level='dangerous'] { background: magenta; }
    /*openButton->setProperty("level",  "dangerous");*/

    3.4 类选择器

     .QPushButton 

     匹配所有QPushButton的实例,但是并不匹配其子类。这是与CSS中的类选择器不一样的地方,注意前面有一个点号

    1 .RedButton { background: magenta; }
    2  
    3 /*
    4 openButton->setProperty("class",  "RedButton");
    5 closeButton->setProperty("class", "RedButton");
    6 */

    3.5 ID选择器

    #myButton

     匹配所有id为myButton的控件实例,这里的id实际上就是objectName指定的值

    #openButton, #closeButton { background: magenta; }

    3.6 后代选择器

    QDialog QPushButton

       所有QDialog容器中包含的QPushButton,不管是直接的还是间接的

    1 QDialog {background: gray;}
    2 /* 设置 QDialog中的 QPushButton 的 QSS */
    3 QDialog QPushButton {
    4     border: 2px solid magenta;
    5     border-radius: 10px;
    6     background: white;
    7     padding: 2px 15px;
    8 }

    3.7 子选择器

    QFrame> QPushButton

       所有QFrame容器下面的QPushButton,其中要求QPushButton的直接父容器是QFrame,注意和后代选择器的区别

    1 QFrame {background: gray;}
    2 QFrame > QPushButton {
    3     border: 2px solid magenta;
    4     border-radius: 10px;
    5     background: white;
    6     padding: 2px 15px;
    7 }

    3.8 伪类选择器

    选择器:状态 作为选择器,支持 ! 操作符,表示 非。

    1 QPushButton:hover { color: white }
    2 QCheckBox:checked { color: white }
    3 QCheckBox:!checked { color: red }

    所有的这些选择器可以联合使用,并且支持一次设置多个选择器类型,用逗号隔开,这点与CSS一样,例如:

    #frameCut,#frameInterrupt,#frameJoin

     表示所有这些id使用一个规则。

    #mytable  QPushButton

     表示选择所有id为mytable的容器下面的QPushButton实例

    四、QSS常用属性
    4.1 字体
    大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD

    样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)

    行高 {line-height: normal;}(正常) 单位:PX、PD、EM

    粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)

    变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)

    大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)

    修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)

    字体名:

    微软雅黑:Microsoft YaHei

    宋体:SimSun

    黑体:SimHei

    仿宋: FangSong

    楷体:  KaiTi

    隶书:LiSu

    幼圆:YouYuan

    华文细黑:STXihei

    华文楷体:STKaiti

    华文宋体:STSong

    华文中宋:STZhongsong

    华文仿宋:STFangsong

    方正舒体:FZShuTi

    方正姚体:FZYaoti

    华文彩云:STCaiyun

    华文琥珀:STHupo

    华文隶书:STLiti

    华文行楷:STXingkai

    华文新魏:STXinwei

    1 font: 15px "Segoe UI";             /* 字体:大小 名称 */  
    2 font-family: "Segoe UI";           /* 字体名称 */

    4.2 颜色

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

    1 colo:rgb(255,255,255);   
    2 color: #F5F5F5;               /* 前景(文本)颜色 */  
    3 color: qlineargradient();     /* 前景(文本)颜色:线性渐变*/  
    4 color: qradialgradient();     /* 前景(文本)颜色:辐射渐变*/  
    5 color: qconicalgradient();    /* 前景(文本)颜色:梯形渐变*/ 

    4.3 内边距

    1 padding: 4px;                      /* 文字边距 */  
    2 padding-left: 5px;                 /* 文字左边距 */  
    3 padding-right: 10px;               /* 文字右边距 */  
    4 padding-top: 3px;                  /* 文字顶边距 */  
    5 padding-bottom: 3px;               /* 文字底边距 */

    4.4 外边距

    1 margin: 14px 18px 20px 18px; /*外边距 顺序上右下左 */
    2 margin-top: 14px;
    3 margin-right: 18px;
    4 margin-bottom: 20px;
    5 margin-left: 18px;

    4.5 背景

    1 background-color: #202122;               /* 背景颜色 */  
    2 background-color: qlineargradient();    /* 背景颜色:线性渐变*/ 
    3 background-color: qradialgradient();    /* 背景颜色:辐射渐变*/
    4 background-color: qconicalgradient();   /* 背景颜色:梯形渐变*/ 
    5 background-image:url(boder.png);        /* 背景图片 */  
    6 background-position: ;                 /* 背景图片对齐方式 */  
    7 background-repeat: ;                   /* 背景图片平铺方式 */ 

    4.6 边框
    border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset;

    border-; 边框宽度

    border-color:#;

    简写方法border:width style color; /*简写*/

    border: 1px solid #FDBC03;                       /* 边框:宽度 颜色*/  
    border-image:url(boder.png) 4 8 12 16;           /* 边界图 切线 */  
    border-radius: 4px;                              /* 角弧度 */  
    border-top-left-radius: ;                        /* 角弧度:左上角*/ 
    border-top-right-radius: ;                       /* 角弧度:右上角*/ 
    border-bottom-left-radius: ;                     /* 角弧度:左下角*/  
    border-bottom-right-radius: ;                    /* 角弧度:右下角*/

    4.7 宽高

    1 12px;   /*设置宽度 单位像素*/
    2 height:40px     /*设置高度*/
    3 min-65px;     /*最小宽度 设置width无效可以尝试设置min-width */                      
    4 min-height:12px;    /*最小高度*/                       
    5 max-12px;
    6 max-height:12px;

    五:QSS伪状态与子控件

    伪状态列表

     1 :checked                        /*button部件被选中*/ 
     2 :unchecked                      /*button部件未被选中*/ 
     3 :disabled                       /*部件被禁用*/ 
     4 :enabled                        /*部件被启用*/ 
     5 :focus                          /*部件获得焦点*/ 
     6 :hover                          /*鼠标位于部件上*/ 
     7 :indeterminate                  /*checkbox或radiobutton被部分选中*/ 
     8 :off                            /*部件可以切换,且处于off状态*/ 
     9 :on                             /*部件可以切换,且处于on状态*/ 
    10 :pressed                        /*部件被鼠标按下*/

    子部件列表

     1 ::down-arrow         /*combo box或spin box的下拉箭头*/ 
     2 ::drop-down          /*combo box的下拉箭头*/ 
     3  
     4 ::indicator      /*checkbox、radio button或可选择group box的指示器*/ 
     5 ::item               /*menu、menu bar或status bar的子项目*/ 
     6 ::menu-indicator     /*push button的菜单指示器*/ 
     7 ::title              /*group box的标题*/ 
     8  
     9 ::down-button        /*spin box的向下按钮*/
    10 ::up-arrow           /*spin box的向上箭头*/ 
    11 ::up-button          /*spin box的向上按钮*/ 
  • 相关阅读:
    spring事务管理中,使用Synchronized修饰事务方法,同步为什么会失效
    java枚举类是怎么初始化的,为什么说枚举类是线程安全的
    spring事务管理中,同一个Service类中非事务方法调用事务方法,事务失效解决方法(3种)
    spring boot借助freemarker实现word文档模板导出
    mybatis plus使用报错:Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax err
    js中遍历枚举类型
    IDEA 设置SVN提交忽略文件 target .iml
    python中的open( )函数
    使用crf++
    安装crf++
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14720851.html
Copyright © 2020-2023  润新知