QT +樣式表


  學習樣式表的目的:可以設計出好看的控件。(比如可以給一些按鈕設計成好看的圖片)

  QT 樣式表的思想很大程度上是來自於HTML的層疊式樣式表(CSS),通過調用QWidget->setStyleSheet()或者QApplication->setStyleSheet(),你可以為一個獨立的子部件、整個窗口,甚至是整個應用程序指定一個樣式表。

  樣式表的語法基礎:

  QT樣式表與CSS的語法規則幾乎完全相同。

  一個樣式表由一系列的樣式規則構成,每個樣式規則都有着下面的形式;

  selector {  attribute: value  }

選擇器:(selector )部分通常是一個類名(例如QComboBox),當然也還有其他的語法形式。

屬性(attribute)部分是一個樣式表屬性的名字,值(value  )部分是賦給該屬性的值。

為了使用上的方便,我們還可以使用一種簡化形式:

 

selector1, selector2, ...,  selectorM {  
attribute1: value1;
attribute2: value2;
attribute3: value3; 
.......
attributeN: valueN; 
 }

 

 這種簡化方式可以同時為與M個選擇器相匹配的部件設置N種屬性。例如:

QChecked,QComboBox, QSpinBox{
color  :red;
background-color :white;
font :bold;
}

 

 

示列代碼如下:

 

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);


    //功能:改變控件的背景色
    this->setStyleSheet("QLabel{color:rgb(0,255,255);"
                        "background-color:red;"
                        "}");


    /* 功能:將控件背景換為圖片
     * "background-image:url(://res/1.jpg);"不可以伸縮,
     *
     * "border-image:url(://res/1.jpg);" 可以伸縮,更加的實用
     *
     * "border-image:url(://res/1.jpg) 4 4 4 4 stretch stretch;"可以實現對圖片的裁剪
    */

    ui->label_2->setStyleSheet("QLabel{color:rgb(0,255,255);"
                               "background-color:blue;"
                              // "background-image:url(://res/1.jpg);"
                              // "border-image:url(://res/1.jpg);"
                               "border-image:url(://res/1.jpg) 4 4 4 4 stretch stretch;"
                               "}");

    //處理 偽狀態
    /* 功能:當鼠標進入控件的區域內是改變背景圖
     *
     * 部件的外觀可以按照用戶界面元素狀態的不同來分別定義,這在樣式表中被稱為“偽狀態”。
     * 例如:如果我們想在一個 push button在被按下的時候具有sunken的外觀,我們可以指定一個叫做:pressed的偽狀態。
     *
    */

    ui->pushButton->setStyleSheet("QPushButton{"
                                  "border: 2px outset green;"
                                  "border-image:url(://res/1.jpg);"
                                  "}"
                                  "QPushButton:hover{"
                                  "border-image:url(://res/2.png);"
                                  "}"

                                  );




}

Widget::~Widget()
{
    delete ui;
}

 

類似"QPushButton:hover{" "border-image:url(://res/2.png);" "}"中的hover偽狀態列表還有如下:

  偽狀態    描述

:checked  button部件被選中

:disabled  部件被選中

:enable    部件被啟用

:focus    部件獲得焦點

:hover    鼠標位於部件上

:indeterminate  checked或radiobutton被部分選中

:off     部件可以切換,且處於off狀態

:on     部件可以切換,且處於on 狀態

:pressed  部件被鼠標按下

:unchecked   button部件未被選中

 

下面兩張圖是運行顯示圖:

圖一鼠標沒有位於button部件上,圖二是鼠標位於button上

圖一:

        

圖二:

        

 

到此為止,QT的樣式表的學習就先告一段落了。運行的結果也是可以的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM