setStyleSheet 设置样式表 公共槽


Qt 样式表又称 Qt Style Sheet, 缩写为 QSS。

setStyleSheet 公共槽用于按 CSS2 规范,设置控件 QSS 样式。

QSS 对像 rgba(0, 0, 0, 170) 的 RGBA 颜色值的兼容性,优于像 #bf363636 的十六进颜色值。

  1. 一般警告

  2. 用户编写 QSS 键入的颜色值是 rgb(0, 0, 0, 175),而不是 rgba(0, 0, 0, 175),运行时后台会输出以下警告提示:

    QCssParser::parseColorValue: Specified color without alpha value but alpha given: 'rgb 0, 0, 0, 175'
    						

    若按以下形式,设置 labelExample 样式:

    self.labelExample.setStyleSheet("QLabel{color:#0fff;}")
    						

    运行时后台会输出以下警告提示:

    QCssParser::parseHexColor: Unknown color name '#0fff'
    						

    先设置 buttonExample 固定大小,再设置样式:

          self.buttonExample.setFixedSize(20, 20)
     
          self.buttonExample.setStyleSheet("""
    QPushButton{
        background:transparent;
        border-image:url(res/images/example.png);
    }
    QPushButton:pressed{
        border-image:url(res/images/example_press.png);
    }""")
    						

    运行时后台有时会输出以下警告提示 (由于上下文或样式本身存在问题,导致无法解析 QSS 样式):

    Could not parse stylesheet of object QPushButton(0x12653ed8, name = "buttonExample")
    						
  3. 另类规范

  4. 以下范例中的十六进制 #bf363636 颜色值,对应 rgba(54, 54, 54, 191),而不是 rgba(191, 54, 54, 54),有点另类:

    QWidget{
    	background-color:#bf363636;
    }
    						

    按 rgba(54, 54, 54, 191) 展示半透明黑色,若按 rgba(191, 54, 54, 54) 展示半透明暗红色。

  5. Linux Platform

  6. 以下范例 QTableWidget 的单元格边框线,应完全透明:

    QWidget#widgetContent{
    	background-color:rgba(255, 255, 255, 235);
    }
    QTableWidget{
    	background-color:rgba(0, 0, 0, 0);
    	gridline-color:rgba(0, 0, 0, 0);
    }
    						

    单元格边框线颜色却可能变成 rgb(0, 0, 0) 黑色,需按下以形式设置 (与背景同色):

    QTableWidget{
    	background-color:rgba(0, 0, 0, 0);
    	gridline-color:rgba(255, 255, 255, 235);
    }
    						
  7. 不兼容

  8. 不兼容包含以下非 ASCII 特殊字符的边界图像样式路径:

    QWidget#widgetImage{
        border-image:url("test(副本).png");
    }
    						

    解决办法是换成兼容字符路径。

See also:

Qt 样式表

Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.