Qss學習之一(屬性設置)

本文只介紹如何設置參數,不講解有哪些屬性參數。


qss通過/*selector:declaration*/設置其屬性參數等

我們在本地創建一個qss文件,然後在代碼中加載即可

QFile qss("testqss.qss");
qss.open(QFile::ReadOnly);
qApp->setStyleSheet(qss.readAll());
qss.close();


1、簡單的qss語法

/*設置QWidget且obejectname爲testwidget的屬性*/

QWidget#testwidget
{
background-color:rgb(0,0,0);
}
/* cpp中的語句

QWidget* pWidget = new QWidget;

pWIdget->setObjectName("testwidget");

*/


/*所有QPushButton及它的子類生效*/
QPushButton
{
color:rgb(0,0,0);
}


/*只對QPushButton生效,對其子類不生效*/
.QPushButton
{
color:rgb(0,0,255);
}

/* cpp中的代碼
QPushButton* p3 = new CPushButtonSub("subbutton", this);

CPushButtonSub是自己寫的一個繼承自QPushButton的類,QT判斷是否是子類還需要加上Q_OBJECT宏,QT使用的不是C++的運行時多態

p3是不會有上面.QPushButton的屬性的,但是會使用前面一個QPushButton的屬性的

*/


/*對objectname=testbtn並且有一個屬性testProperty=true生效*/
/*此處使用testProperty="true"或則testProperty=true都可以*/
QPushButton#testbtn[testProperty="true"]
{
color:rgb(255,255,255);
}

cpp代碼示例

QPushButton* p1 = new QPushButton("objname-testbtn", this);
p1->setObjectName("testbtn");
p1->setProperty("testProperty", true);


/*在QWidget#testwidget中,孩子及子孩子中類型QLineEdit的屬性設置*/

/*即設置界面objectnname爲testwidget下的所有QLineEdit的屬性*/
QWidget#testwidget  QLineEdit
{
color:rgb(0,0,100);
}

代碼示例

QWidget* pTestWidget = new QWidget(this);

pTestWidget->setObjectName("testwidget ");

QLineEdit* p4 = new QLineEdit(pTestWidget);


/*在QWidget#testwidget的孩子中QLabel的屬性設置,不包括子孩子*/
QWidget#testwidget > QLabel
{
color:rgb(0,0,0);
background:rgb(255,0,0);
}

代碼示例

QWidget* pWidgetChild = new QWidget(this);
pWidgetChild->show();
pWidgetChild->move(300, 200);
pWidgetChild->setWindowTitle("objname-childwidget");
pWidgetChild->setObjectName("childwidget");
QLabel* p5 = new QLabel(pWidgetChild);  // p5是testWidget的子widget的孩子,是不會使用上面的屬性的


/*多個類型對象設置相同的屬性值*/
QToolButton,QComboxBox
{
color:red
}


2、/*僞狀態QWidget:xxx*/

即各個控件所支持的一些狀態信息

/*僞狀態*/
.QPushButton:hover 

color: white
}
.QPushButton:!hover 

color: blue 
}
QCheckBox:hover:checked 

color: red 
}
QCheckBox:unchecked  /*或QCheckBox:!checked也可以*/

color: blue 
}
QCheckBox:!hover 

color: yellow 
}


3、子控件

/*子控件 QWidget::xxx*/
QComboBox::drop-down

image: url(dropdown.png);
subcontrol-origin:margin;
}


4、衝突的解決

會使用更特殊的進行設置,看着都不特殊,就會以qss後面一句爲準


參考QT的幫助文檔:

The Style Sheet Syntax

Qt Style Sheets Reference

下一篇將介紹各個控件有哪些屬性,比如image,color屬性等

再往下應該介紹有哪些僞狀態

再往下介紹有哪些子控件



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章