九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用Qss設(shè)置窗體樣式

本文主要是對官方文檔的翻譯。

一、Qss作用與規(guī)則

Qss(Qt style sheet)是一種樣式文本規(guī)范,可以使用QApplication::setStyleSheet()來設(shè)置整個(gè)應(yīng)用的樣式或者使用QWidget::setStyleSheet()設(shè)置某個(gè)QWidget(包括其子類)窗體的樣式。Qss具有級聯(lián)屬性,即假設(shè)在不同的級別設(shè)置了多個(gè)樣式表,那么Qt將從所有設(shè)置的樣式表中派生出有效的樣式表。樣式表可以讓您執(zhí)行所有類型的定制,這些定制僅使用QPalette是很難或不可能執(zhí)行的。例如,你想要黃色背景作為強(qiáng)制字段,紅色文本作為潛在的破壞性按鈕,或者花哨的復(fù)選框,樣式表就是答案。

樣式規(guī)則由一個(gè)選擇器(selector)和一個(gè)聲明(declaration)組成。選擇器指定哪些Widget受到該規(guī)則的影響;聲明指定應(yīng)該在Widget上設(shè)置哪些屬性。例如:QPushButton { color: red } ,QPushButton是selector,{color:red}是declaration,這個(gè)規(guī)則指定QPushButton和其子類應(yīng)該使用紅色作為前景色(文本顏色)。樣式規(guī)則中的申明部分是由一個(gè){property:value}表組成的,例如:QPushButton { color: red; background-color: white }。當(dāng)多個(gè)類型的Widget具有相同的{property:value}時(shí)也可以在selector部分使用逗號隔開,例如QPushButtonQLineEditQComboBox { color: red }。

二、selector類型

Qt樣式表支持CSS2中定義的所有選擇器。下表總結(jié)了常用的選擇器類型。

selector示例解釋

Universal Selector

*匹配所有Widget

Type Selector

QPushButton

匹配所有QPushButton組件和其子組件

Property Selector

QPushButton[flat="false"]

匹配所有非平面(flat="false")屬性的QPushButton。這種過濾器中過濾的對象需要先設(shè)置QVariant支持的類型屬性(setProperty(“flat”, “false”))。

警告:如果在樣式表設(shè)置之后Qt屬性的值發(fā)生變化,可能需要強(qiáng)制樣式表重新計(jì)算。實(shí)現(xiàn)此目的的一種方法是取消樣式表的設(shè)置并再次設(shè)置它。

Class Selector

.QPushButton

匹配QPushButton組件,但是不包含其子類。

ID Selector

QPushButton#okButton

匹配所有對象名是okButton的QPushButton控件

Descendant Selector

QDialog QPushButton

匹配QPushButton的所有實(shí)例,它們是QDialog的后代控件(子控件、孫控件等)。

Child Selector

QDialog > QPushButton

匹配QPushButton的所有實(shí)例,它們是QDialog的直接子對象。

三、Property類型

下表列出了Qt樣式表支持的常用屬性(所有屬性見https://doc.qt.io/qt-5/stylesheet-reference.html)。可以給屬性賦哪些值取決于屬性的類型。除非另有說明,以下屬性適用于所有小部件。標(biāo)記有星號*的屬性是特定于Qt的,在CSS2或CSS3中沒有相同的屬性。

Proprty類型解釋
alternate-background-colorBrush

alternate-background-color主要用于 QAbstractItemView子類,用來設(shè)置視圖文本的交替背景色(需要設(shè)置視圖的交替背景色屬性)。例如:

  1. QTreeView {
  2. alternate-background-color: blue;
  3. background: yellow;
  4. }
backgroundBackground

設(shè)置窗體背景的簡寫,包括設(shè)置background-colorbackground-imagebackground-repeatbackground-position等.例如:

  1. QTextWdit {background:red};
  2. QFrame {background:url(:/img/first.jpg)};
background-colorBrush設(shè)置窗體的背景顏色。例如:QLabel { background-color: yellow } QLineEdit { background-color: rgb(255, 0, 0) }
background-imageUrl設(shè)置窗體的背景圖片,圖像的半透明部分讓背景色透過。例:QFrame { background-image: url(:/images/hydro.png) }
background-repeatRepeat

設(shè)置背景圖像是否重復(fù)填充背景原點(diǎn)矩形,以及如何重復(fù)填充。默認(rèn)是在兩個(gè)方向上重復(fù)(repeat)。

  1. QFrame {
  2. background: white url(:/images/ring.png);
  3. background-repeat: repeat-y;
  4. background-position: left;
  5. }
background-positionAlignment

背景原點(diǎn)矩形內(nèi)背景圖像的對齊。默認(rèn)對齊方式為左上角。??????

  1. QFrame {
  2. background: url(:/images/footer.png);
  3. background-position: bottom left;
  4. }
background-attachmentAttachment設(shè)置QAbstractScrollArea中的背景圖像相對于視口是滾動(dòng)還是固定。默認(rèn)情況下,背景圖像會隨著視口滾動(dòng)。
background-clipOrigin設(shè)置背景色和背景圖像被剪切填充背景矩形的方式。
background-originOrigin設(shè)置窗體的背景矩形,與背景位置和背景圖像一起使用。
borderBorder設(shè)置窗體的邊框?qū)傩裕╞order-colorborder-style和border-width。也可以使用border-top、border-left等獨(dú)立設(shè)置邊框的每一條邊的樣式。例如:QLineEdit { border: 1px solid white } 、QLineEdit { border-right: 1px solid white }
border-colorBox Colors

設(shè)置邊框的顏色樣式,同樣可以使用border-top-color、border-bottom-color等獨(dú)立設(shè)置邊框的每一條邊的顏色樣式。例如:

QLineEdit { border-color: white } 、QLineEdit { border-right-color: red }

border-imageBorder Image使用圖片來填充邊框。圖像被切成九個(gè)部分(top left, top center, top right, center left, center, center right, bottom left, bottom center, and bottom right),并在必要時(shí)適當(dāng)拉伸。
border-radiusRadius

設(shè)置矩形四個(gè)角的弧度,還可以使用border-top-left-radiusborder-top-right-radiusborder-bottom-right-radius, and border-bottom-left-radius來指定某一個(gè)角的弧度。例如:

QLineEdit { border-radius: 4px; }

border-styleBorder Style設(shè)置邊框線的類型,還可以使用border-top-styleborder-right-style等來指定任意線的類型。QLineEdit { border-style: solid;}
border-widthBox Lengths設(shè)置邊框線的寬度,同樣可以使用border-top-widthborder-right-width等設(shè)置特定線的寬度。QLineEdit { border-width: 1px;}
bottomLength設(shè)置控件中子控件(如ComboBox的下拉按鈕)的位置。若位置是相對的(默認(rèn))則將子控件向上移動(dòng)指定的偏移量;若位置的絕對的,則指定子控件底部與父控件底部的距離。例如:QSpinBox::down-button { bottom: 2px }。同樣可以使用left、top、right等設(shè)置子控件與父控件的其他邊距。使用height設(shè)置子控件高度。
colorBrush設(shè)置文本的顏色,例如:QPushButton { color: red }
fontFont設(shè)置文字屬性,包括font-family(字體)font-size(大?。?/code>, font-style(傾斜)和 font-weight(加粗)。例如:QCheckBox { font: bold italic large "Times New Roman" }
gridline-color*Color設(shè)置QTableView中網(wǎng)格線的顏色。例如:* { gridline-color: gray }
iconUrl+設(shè)置具有圖標(biāo)控件的圖標(biāo),目前具有此屬性的控件只有QPushButton。
icon-sizeLength設(shè)置圖標(biāo)的長和寬。
image*Url+在子控件的內(nèi)容矩形中繪制的圖像。例如:QSpinBox::down-button { image: url(:/images/spindown.png) }
lineedit-password-character*Number設(shè)置QLineEdit中顯示的字符,可使用Unicode的字符編碼指定。例如* { lineedit-password-character: 9679 },表示使用Unicode中9679號字符顯示。
lineedit-password-mask-delay*Number在lineedit-password-character應(yīng)用于可見字符之前,QLineEdit密碼掩碼延遲(以毫秒為單位)。例如:* { lineedit-password-mask-delay: 1000 }
marginBox Lengths設(shè)置窗體與其他窗體的邊緣距離,具體可使用margin-topmargin-rightmargin-bottom, 和 margin-left來指定。例如:QLineEdit { margin: 2px }
paddingBox Lengths

設(shè)置窗體與內(nèi)部子窗體之間的邊距,同樣可使用padding-toppadding-rightpadding-bottom 和 padding-left來特定指定。例如:QLineEdit { padding: 3px }

spacing*Length設(shè)置內(nèi)部子窗體之間的邊距。例如:QMenuBar { spacing: 10 }
text-alignAlignment設(shè)置字體對齊方式。QPushButton {    text-align: left;}

以上只是簡單介紹一些常用的屬性設(shè)置,具體的各種屬性該怎樣設(shè)置可以查看每個(gè)屬性的類型,官方文檔給出了很詳細(xì)的每種屬性設(shè)置的方式以及意義。

四、子控件

Qss除了對常用控件、窗體的樣式進(jìn)行設(shè)置,還可以對其子控件(如QComboBox的下拉按鈕、QSpinBox的上下按鈕等)的位置,填充圖片等屬性進(jìn)行設(shè)置。此時(shí)可以使用控件名::子控件名來表示selector。例如:QComboBox::drop-down { image: url(dropdown.png) }用來設(shè)置QComboBox的下拉按鈕的圖片。更多的子控件名稱如下表:

子控件解釋
::add-lineQScrollBar添加一行的按鈕。
::add-page在句柄(滑塊)和QScrollBar的附加行之間的區(qū)域。
::branchQTreeView的分支指示器。
::chunkQProgressBar的進(jìn)度塊。
::close-buttonQDockWidget的關(guān)閉按鈕或QTabBar的選項(xiàng)卡
::cornerQAbstractScrollArea中兩個(gè)滾動(dòng)條之間的角
::down-arrowQComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向下箭頭。
::down-buttonQScrollBar或QSpinBox的向下按鈕。
::drop-downQComboBox的下拉按鈕。
::float-buttonQDockWidget的浮動(dòng)按鈕
::grooveQSlider的凹槽。
::indicatorQAbstractItemView、QCheckBox、QRadioButton、可檢查QMenu項(xiàng)或可檢查QGroupBox的指示器。
::handleQScrollBar、QSplitter或QSlider的句柄(滑塊)。
::iconQAbstractItemView或QMenu的圖標(biāo)。
::itemQAbstractItemView、QMenuBar、QMenu或QStatusBar的一個(gè)條目。
::left-arrowQScrollBar的左箭頭。
::left-cornerQTabWidget的左上角。例如,此控件可用于控制QTabWidget中左側(cè)窗口小部件的位置。
::menu-arrow帶有菜單的QToolButton的箭頭。
::menu-buttonQToolButton的菜單按鈕。
::menu-indicatorQPushButton的菜單指示器。
::right-arrowQMenu或QScrollBar的右箭頭。
::paneQTabWidget的窗格(框架)。
::right-cornerQTabWidget的右角。例如,此控件可用于控制QTabWidget中右下角小部件的位置。
::scrollerQMenu或QTabBar的滾動(dòng)條。
::sectionQHeaderView的部分。
::separatorQMenu或qmain窗口中的分隔符。
::sub-line刪除一行QScrollBar的按鈕。
::sub-page在句柄(滑塊)和QScrollBar的子行之間的區(qū)域。
::tabQTabBar或QToolBox的選項(xiàng)卡。
::tab-barQTabWidget的選項(xiàng)卡欄。此子控件的存在只是為了控制QTabWidget中QTabBar的位置。使用::tab子控件樣式化選項(xiàng)卡。
::tearQTabBar的撕裂指示器。
::tearoffQMenu的撕下指示器。
::textQAbstractItemView的文本。
::titleQGroupBox或QDockWidget的標(biāo)題。
::up-arrowQHeaderView(排序指示器)、QScrollBar或QSpinBox的向上箭頭。
::up-buttonQSpinBox的向上按鈕。

五、偽狀態(tài)

Qt中有的控件會有許多狀態(tài),有時(shí)需要對不同狀態(tài)進(jìn)行區(qū)分(例如按鈕的選中、按下等狀態(tài)的區(qū)分),需要為不同的狀態(tài)設(shè)置不同的樣式。此時(shí)使用 控件名:狀態(tài)名 表示selector。例如:QPushButton:hover { color: white }表示設(shè)置鼠標(biāo)放在按鈕上時(shí)按鈕字體顏色。更多的狀態(tài)名稱見下表:

偽狀態(tài)解釋
:active窗體為活動(dòng)窗體時(shí)的狀態(tài)
:adjoins-item當(dāng)一個(gè)QTreeView的::branch與一個(gè)項(xiàng)目相鄰時(shí),該狀態(tài)被設(shè)置。
:alternate當(dāng)QAbstractItemView::alternatingRowColors()被設(shè)置為true時(shí),繪制QAbstractItemView的每一行時(shí)都會設(shè)置此狀態(tài)。
:bottom控件位于底部。例如,QTabBar的標(biāo)簽位于底部。
:checked選中該項(xiàng)。例如,QAbstractButton的選中狀態(tài)。
:closable項(xiàng)目可以關(guān)閉。例如,QDockWidget打開了QDockWidget:: dockwidgetcloseable特性。
:closed項(xiàng)目處于關(guān)閉狀態(tài)。例如,QTreeView中的一個(gè)非展開項(xiàng)
:default該項(xiàng)目是默認(rèn)的。例如,一個(gè)默認(rèn)的QPushButton或QMenu中的一個(gè)默認(rèn)動(dòng)作。
:disabled該項(xiàng)目被禁用。
:editableQComboBox是可編輯的。
:edit-focus項(xiàng)目有編輯焦點(diǎn)(見QStyle::State_HasEditFocus)。此狀態(tài)僅適用于Qt擴(kuò)展應(yīng)用程序。
:enabled啟用該項(xiàng)。
:exclusive該項(xiàng)是獨(dú)占項(xiàng)組的一部分。例如,獨(dú)占QActionGroup中的菜單項(xiàng)。
:first該項(xiàng)目是(列表中的)第一項(xiàng)。例如,QTabBar中的第一個(gè)選項(xiàng)卡。
:flat項(xiàng)目是扁平的。例如,一個(gè)平面的QPushButton。
:floatable項(xiàng)目可以浮動(dòng)。例如,QDockWidget啟用了QDockWidget:: dockwidgetfloatatable特性。
:focus項(xiàng)目有輸入焦點(diǎn)。
:has-children該項(xiàng)目有子項(xiàng)目。例如,QTreeView中的一項(xiàng)有子項(xiàng)。
:has-siblings該項(xiàng)目有兄弟項(xiàng)。例如,QTreeView中的一個(gè)條目。
:horizontal項(xiàng)目具有水平方向
:hover鼠標(biāo)懸停在項(xiàng)目上。
:indeterminate項(xiàng)目處于不確定狀態(tài)。例如,QCheckBox或QRadioButton被部分選中。
:last這個(gè)項(xiàng)目是(列表中)最后一個(gè)項(xiàng)目。例如,QTabBar中的最后一個(gè)選項(xiàng)卡。
:left項(xiàng)目位于左側(cè)。例如,QTabBar的選項(xiàng)卡位于左側(cè)。
:maximized項(xiàng)目被最大化。例如,最大化的QMdiSubWindow。
:middle項(xiàng)目在(列表中)中間。例如,一個(gè)不在QTabBar開始或結(jié)束的選項(xiàng)卡。
:minimized項(xiàng)目被最小化了。例如,最小化的QMdiSubWindow。
:movable項(xiàng)目可以四處移動(dòng)。例如,QDockWidget啟用了QDockWidget::DockWidgetMovable特性。
:no-frame該項(xiàng)目沒有框架。例如,一個(gè)無框架的QSpinBox或QLineEdit。
:non-exclusive項(xiàng)是非排他項(xiàng)組的一部分。例如,非排他的QActionGroup中的菜單項(xiàng)。
:off對于可以切換的項(xiàng),這適用于處于“關(guān)閉”狀態(tài)的項(xiàng)。
:on對于可以切換的項(xiàng),這適用于處于“on”狀態(tài)的小部件。
:only-one該項(xiàng)目是唯一的(在列表中)。例如,QTabBar中的一個(gè)單獨(dú)的標(biāo)簽。
:open項(xiàng)目處于打開狀態(tài)。例如,一個(gè)在QTreeView中展開的項(xiàng)目,或者一個(gè)帶有打開菜單的QComboBox或QPushButton。
:next-selected選擇下一個(gè)項(xiàng)目(在列表中)。例如,QTabBar選中的選項(xiàng)卡就在該項(xiàng)的旁邊。
:pressed項(xiàng)目正在使用鼠標(biāo)按下。
:previous-selected選中前一個(gè)項(xiàng)目(在列表中)。例如,QTabBar中緊鄰所選選項(xiàng)卡的選項(xiàng)卡。
:read-only該項(xiàng)被標(biāo)記為只讀或不可編輯。例如,只讀QLineEdit或不可編輯的QComboBox。
:right項(xiàng)目位于右側(cè)。例如,QTabBar的選項(xiàng)卡位于右側(cè)。
:selected項(xiàng)目被選中。例如,QTabBar中選定的選項(xiàng)卡或QMenu中選定的項(xiàng)。
:top項(xiàng)目位于頂部。例如,QTabBar的標(biāo)簽位于頂部。
:unchecked未選中該項(xiàng)。
:vertical項(xiàng)目具有垂直方向。
:window小部件是一個(gè)窗口(即頂層小部件)

六、沖突處理機(jī)制

當(dāng)多個(gè)樣式規(guī)則用不同的值指定相同的屬性時(shí),考慮以下樣式表:QPushButton#okButton { color: gray }    QPushButton { color: red } 。這兩個(gè)規(guī)則都匹配名為okButton的QPushButton實(shí)例,并且對于color屬性存在沖突。為了解決這個(gè)沖突,我們必須考慮選擇器的特殊性。在上面的例子中,QPushButton#okButton被認(rèn)為比QPushButton更具體,因?yàn)樗?通常)引用一個(gè)對象,而不是一個(gè)類的所有實(shí)例。

所以當(dāng)多個(gè)樣式規(guī)則產(chǎn)生沖突時(shí),系統(tǒng)會選擇更具有針對性(特異性)的樣式規(guī)則進(jìn)行使用。而為了確定規(guī)則的特異性,Qt樣式表遵循CSS2規(guī)范:

選擇器的特異性計(jì)算如下:
              統(tǒng)計(jì)選擇器中ID屬性的數(shù)量(= a)
              計(jì)算選擇器中其他屬性和偽類的數(shù)量(= b)
              計(jì)算選擇器中元素名稱(如LI、OL等元素名稱)的數(shù)量(= c)

然后根據(jù)a*100+b*10+c計(jì)算出相應(yīng)規(guī)則的特異性值。特異性值越大匹配性越好。

例如:

  1. * {} /* a=0 b=0 c=0 -> specificity = 0 */
  2. LI {} /* a=0 b=0 c=1 -> specificity = 1 */
  3. UL LI {} /* a=0 b=0 c=2 -> specificity = 2 */
  4. UL OL+LI {} /* a=0 b=0 c=3 -> specificity = 3 */
  5. H1 + *[REL=up]{} /* a=0 b=1 c=1 -> specificity = 11 */
  6. UL OL LI.red {} /* a=0 b=1 c=3 -> specificity = 13 */
  7. LI.red.level {} /* a=0 b=2 c=1 -> specificity = 21 */
  8. #x34y {} /* a=1 b=0 c=0 -> specificity = 100 */

七、示例

改示例主要是對Qt自帶的Style sheet示例的修改。

  1. //.h
  2. #ifndef WIDGET_H
  3. #define WIDGET_H

  4. #include <QMainWindow>
  5. #include <QApplication>

  6. class Widget : public QMainWindow
  7. {
  8. Q_OBJECT

  9. public:
  10. Widget(QMainWindow *parent = nullptr);
  11. ~Widget();
  12. };
  13. #endif // WIDGET_H


  14. //.cpp
  15. #include "widget.h"
  16. #include <QFrame>
  17. #include <QLabel>
  18. #include <QComboBox>
  19. #include <QSpinBox>
  20. #include <QLineEdit>
  21. #include <QTextEdit>
  22. #include <QCheckBox>
  23. #include <QRadioButton>
  24. #include <QHBoxLayout>
  25. #include <QGridLayout>
  26. #include <QGroupBox>
  27. #include <QStringList>
  28. #include <QDialogButtonBox>
  29. #include <QFile>
  30. #include <QMessageBox>

  31. Widget::Widget(QMainWindow *parent)
  32. : QMainWindow(parent)
  33. {


  34. QLabel *label1 = new QLabel("姓名:");
  35. label1->setProperty("class","mandatory");
  36. QComboBox *cmb1 = new QComboBox();
  37. cmb1->setObjectName("name");
  38. cmb1->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed); //默認(rèn)為雙Preferred

  39. QLabel *label2 = new QLabel("性別:");
  40. QRadioButton *rbtn1 = new QRadioButton("男");
  41. QRadioButton *rbtn2 = new QRadioButton("女");
  42. QHBoxLayout *hlayout1 = new QHBoxLayout();
  43. hlayout1->addWidget(rbtn1);
  44. hlayout1->addWidget(rbtn2);
  45. hlayout1->addStretch(1);
  46. QGroupBox *groupBox = new QGroupBox();
  47. groupBox->setLayout(hlayout1);

  48. QLabel *label3 = new QLabel(" 年齡:");
  49. QSpinBox *spinBox1 = new QSpinBox();
  50. spinBox1->setValue(22);
  51. spinBox1->setRange(18,45);
  52. spinBox1->setSingleStep(1);
  53. QHBoxLayout *hlayout2 = new QHBoxLayout();
  54. hlayout2->addWidget(spinBox1);
  55. hlayout2->addStretch(1);

  56. QLabel *label4 = new QLabel("密碼:");
  57. QLineEdit *lineEdit1 =new QLineEdit("Password");
  58. lineEdit1->setEchoMode(QLineEdit::Password);

  59. QLabel *label5 = new QLabel(" 國家:");
  60. QComboBox *cmb2 = new QComboBox();
  61. QStringList str;
  62. str<<"中國"<<"埃及"<<"法國"<<"德國"<<"意大利"<<"印度"<<"挪威"<<"巴基斯坦";
  63. cmb2->addItems(str);
  64. cmb2->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);

  65. QLabel *label6 = new QLabel("職業(yè):");
  66. QTextEdit *textEdit1 = new QTextEdit("開發(fā)者");
  67. textEdit1->append("學(xué)生");
  68. textEdit1->append("創(chuàng)業(yè)者");
  69. textEdit1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

  70. QCheckBox *checkBox = new QCheckBox("我接受這些條款和條件!");

  71. QDialogButtonBox *dialogBtnBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);

  72. QGridLayout *glayout = new QGridLayout();
  73. glayout->addWidget(label1,0,0);
  74. glayout->addWidget(cmb1,0,1);
  75. glayout->addWidget(label2,1,0);
  76. glayout->addWidget(groupBox,1,1);
  77. glayout->addWidget(label3,2,0);
  78. glayout->addLayout(hlayout2,2,1);
  79. glayout->addWidget(label4,3,0);
  80. glayout->addWidget(lineEdit1,3,1);
  81. glayout->addWidget(label5,4,0);
  82. glayout->addWidget(cmb2,4,1);
  83. glayout->addWidget(label6,5,0);
  84. glayout->addWidget(textEdit1,5,1);
  85. glayout->addWidget(checkBox,6,0,1,2);
  86. glayout->addWidget(dialogBtnBox,7,0,1,2);
  87. glayout->setSizeConstraint(QLayout::SetDefaultConstraint);

  88. QString dirPath = QApplication::applicationDirPath();
  89. //QString fileName = dirPath+"/coffee.qss";

  90. QString fileName = "../qss/qss/coffee.qss";
  91. QFile qssFile(fileName);
  92. if(!qssFile.open(QFile::ReadOnly))
  93. {

  94. QMessageBox::warning(this,"打開文件失敗",fileName+"打開失敗");
  95. exit(1);
  96. }
  97. QString qssString = qssFile.readAll();
  98. this->setStyleSheet(qssString);

  99. QFrame *mframe = new QFrame();
  100. mframe->setLayout(glayout);
  101. this->setCentralWidget(mframe);
  102. }

  103. Widget::~Widget()
  104. {
  105. }

.qss文件

  1. Widget {
  2. background-color: beige;
  3. }


  4. /* Nice Windows-XP-style password character. */
  5. QLineEdit[echoMode="2"] {
  6. lineedit-password-character: 9679;
  7. }

  8. /* We provide a min-width and min-height for push buttons
  9. so that they look elegant regardless of the width of the text. */
  10. QPushButton {
  11. background-color: palegoldenrod;
  12. border-width: 2px;
  13. border-color: darkkhaki;
  14. border-style: solid;
  15. border-radius: 5;
  16. padding: 3px;
  17. min-width: 9ex;
  18. min-height: 2.5ex;
  19. }

  20. QPushButton:hover {
  21. background-color: khaki;
  22. }

  23. /* Increase the padding, so the text is shifted when the button is
  24. pressed. */
  25. QPushButton:pressed {
  26. padding-left: 5px;
  27. padding-top: 5px;
  28. background-color: #d0d67c;
  29. }

  30. QLabel, QAbstractButton {
  31. font: bold;
  32. }

  33. /* Mark mandatory fields with a brownish color. */
  34. .mandatory {
  35. color: brown;
  36. }

  37. /* Bold text on status bar looks awful. */
  38. QStatusBar QLabel {
  39. font: normal;
  40. }

  41. QStatusBar::item {
  42. border-width: 1;
  43. border-color: darkkhaki;
  44. border-style: solid;
  45. border-radius: 2;
  46. }

  47. QComboBox, QLineEdit, QSpinBox, QTextEdit, QListView {
  48. background-color: cornsilk;
  49. selection-color: #0a214c;
  50. selection-background-color: #C19A6B;
  51. }

  52. QComboBox::drop-down#name{
  53. image:url(:/res/drop_down.jpg);
  54. }

  55. QListView {
  56. show-decoration-selected: 1;
  57. }

  58. QListView::item:hover {
  59. background-color: wheat;
  60. }

  61. /* We reserve 1 pixel space in padding. When we get the focus,
  62. we kill the padding and enlarge the border. This makes the items
  63. glow. */
  64. QFrame{
  65. /*background-color: beige;*/
  66. margin:10px;
  67. }

  68. QLineEdit, QFrame {
  69. border-width: 2px;
  70. padding: 1px;
  71. border-style: solid;
  72. border-color: darkkhaki;
  73. border-radius: 5px;
  74. }

  75. /* As mentioned above, eliminate the padding and increase the border. */
  76. QLineEdit:focus, QFrame:focus {
  77. border-width: 3px;
  78. padding: 0px;
  79. }

  80. /* A QLabel is a QFrame ... */
  81. QLabel {
  82. border: none;
  83. padding: 0;
  84. background: none;
  85. }

  86. /* A QToolTip is a QLabel ... */
  87. QToolTip {
  88. border: 2px solid darkkhaki;
  89. padding: 5px;
  90. border-radius: 3px;
  91. opacity: 200;
  92. }

  93. /* Nice to have the background color change when hovered. */
  94. QRadioButton:hover, QCheckBox:hover {
  95. background-color: wheat;
  96. }

  97. /* Force the dialog's buttons to follow the Windows guidelines. */
  98. QDialogButtonBox {
  99. button-layout: 0;
  100. }

效果圖:

轉(zhuǎn)自:使用Qss設(shè)置窗體樣式_cloud_yq的博客-CSDN博客_qss設(shè)置樣式 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
QSS-pyqt樣式表
漂亮的Qt控件 QSS代碼例子
Qt StyleSheet樣式表實(shí)例(轉(zhuǎn))
qt5中在QMainWidget中創(chuàng)建菜單欄等一系列控件
PyQt5之布局管理
setStyleSheet來設(shè)置圖形界面的外觀
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服