Qt中QSS的简单使用
樣式表的組成
樣式表由兩大元素組成:選擇器和聲明。選擇器實際上可以理解為對象,聲明則是對該對象的屬性的設置。
樣式表的使用
方法一:在代碼中調用setStyleSheet()來設置樣式;
方法二:通過加載qss文件來設置樣式。
樣式表的簡單使用介紹
setStyleSheet()的簡單應用:
【1】通過QApplication的對象調用;
(1)創建QSS文件——myqss.qss;
創建文本文件,存入源文件所在的同級目錄下,修改其文件名為myqss.qss。
(2)用QtCreate打開該工程,在項目名上右鍵點擊添加新文件,選擇Qt資源文件,按照提示創建資源文件;
(3)在創建的資源文件上右鍵選擇添加前綴,之后添加該項目所用到的資源文件,即圖片,添加之后保存;
(4)在main.cpp文件中添加如下代碼。
備注:
此方法通過在主函數中讀取QSS文件,來設置界面的樣式,可以將整個項目中各界面對應的樣式設置都都在一個QSS文件下
qss文件的大體介紹
內容形式:控件類名#objectName{ … }
如只有一個界面,界面上有一個QPushButton控件,在其對應的qss文件中可以編寫其內容為下:
因為整個應用程序只有一個界面,可以將整個項目中所有控件的樣式設置都寫到一個qss文件中,在main函數中加載qss文件,給界面設置樣式。
2. 多界面的QSS文件
可以將每一個界面寫一個qss文件,然后在各界面對應的類中的構造函數里加載qss文件;也可以將所有界面的樣式設置寫到一個qss文件中,在main函數中加載qss文件。
以上是對QSS使用過程中的一些簡單的總結。涉及更多的內容還需自己挖掘,個人理解在多界面共用一個qss文件時,部件之間關系十分重要。
在使用圖片作為整個界面的背景圖片時,需要在QWidget中拖入一個QWidget,在拖入的QWidget中設置背景透明,背景圖片,并且需要將整個界面的QWidget設置為透明,無標題,否則達不到想要的效果
如下面的qss文件中所寫:
image,backgroun-image,border-image的區別,image的不會改變圖片的大小,不會拉伸和壓縮圖片,backgroun-image一般用于整個控件的背景圖片,無法隨部件的大小自動縮放,border-image為可以隨部件的大小自動縮放
子部件的樣式設置
控件的子控件設置樣式簡單的貼一些自己之前做過的,更多還需自己學習。
/*QComboBox控件的子部件的簡單設置下拉的界面,下拉界面每一項,下拉按鈕的樣式,QSpinBox,QCheckBox,QRadioButton子部件的設置*/ /*下拉按鈕*/ QWidget#systemdefaltSet>QComboBox{ background-color: #121650;border-radius: 6px;font-size: 14px;font-family: Microsoft YaHei;font-weight: 400;color: #FFFFFF; }/*下拉按鈕*/ QWidget#systemdefaltSet>QComboBox::down-arrow{ image:url(:/new/prefix1/image/comboxDown.png); }/*下拉按鈕隱藏邊框*/ QWidget#systemdefaltSet>QComboBox::drop-down{ border:none;top:4px;left:-15px; }/*下拉窗體*/ QWidget#systemdefaltSet>QComboBox QAbstractItemView{ background-color:#55557f;outline: 1px solid #ffaa7f; /* 選定項的虛框 */selection-background-color:#121650;color:#FFFFFF; }/*下拉窗體每一項*/ QWidget#systemdefaltSet>QComboBox QAbstractItemView::item{ height:50px; } /*行列按鈕最初形態#spinBoxrow*/ advanceSet>QSpinBox{ background-color: #12164F;border-radius: 6px; font-size: 14px;font-family: Microsoft YaHei;font-weight: 400;color: #FFFFFF; }/*行列按鈕被點擊之后整體輪廓設置*/ advanceSet>QSpinBox:pressed{ background-color: #121650;border: 1px solid #00FFFF;border-radius: 6px; }/*行列按鈕上箭頭沒有被點擊的狀態:unchecked*/ advanceSet>QSpinBox::up-button{ image:url(:/new/prefix1/image/spinupbtnUnchecked.png); }/*行列按鈕下箭頭沒有被點擊的狀態:unchecked*/ advanceSet>QSpinBox::down-button{ image:url(:/new/prefix1/image/spindownbtnUnchecked.png); }/*行列按鈕上箭頭被點擊的狀態*/ advanceSet>QSpinBox::up-button:pressed{ image:url(:/new/prefix1/image/spinupbtnChecked.png); border:none; }/*行列按鈕下箭頭被點擊的狀態*/ advanceSet>QSpinBox::down-button:pressed{ image:url(:/new/prefix1/image/spindownbtnChecked.png); border:none; }/*此界面上所有的單選按鈕最初狀態*/ advanceSet>QRadioButton{font-size: 14px;font-family: Microsoft YaHei;font-weight: 400;color: #FFFFFF; }/*此界面上所有的單選按鈕的子部件的最初狀態(未點擊狀態)*/ advanceSet>QRadioButton::indicator{image:url(:/new/prefix1/image/radioUnchecked.png); }/*此界面上所有的單選按鈕的子部件的被點擊后的狀態(點擊狀態)*/ advanceSet>QRadioButton::indicator:checked{image:url(:/new/prefix1/image/radioChecked.png); }/*此界面上所有的復選框最初時的狀態*/ advanceSet>QCheckBox{font-size: 14px;font-family: Microsoft YaHei;font-weight: 400;color: #FFFFFF; }/*此界面上所有的復選框子部件未被點擊時的狀態*/ advanceSet>QCheckBox::indicator{background-color:transparent;image:url(:/new/prefix1/image/checkbtnUnchecked.png); }/*此界面上所有的復選框子部件被點擊時的狀態*/ advanceSet>QCheckBox::indicator:checked{image:url(:/new/prefix1/image/checkbtnChecked.png); }多個相同類型的控件的樣式相同
若同一類型的控件的樣式要求一致,可以一起設置。
2.若界面上所有同一類型的控件的樣式都要求設置一致,可以不用指明控件名稱,直接設置。
/*界面上所有的QPushButton控件的樣式一致*/ InformDialog>QPushButton{color:#FFFFFF;background-color:#FF2D3274;border: 1px solid #FFFFFF;border-radius: 6px; }/*取消按鈕被點擊狀態*/ InformDialog>QPushButton:pressed{background-color: #008AFF;border-radius: 6px; }總結
以上是生活随笔為你收集整理的Qt中QSS的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中析构函数
- 下一篇: IOS – OPenGL ES 调节图像