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 平颱

  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");
    }
    						

    解決辦法是換成兼容字符路徑。

另請參閱:

Qt 樣式錶

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。