Qt的Qss用法小結(jié)
Qt 的 Qss 是一種用于定義用戶界面的樣式表語言。它可以用來定義控件的顏色、字體、邊框、背景等樣式,可以很方便的實現(xiàn)自定義的樣式效果。
Qss 的基本語法和 CSS 類似,主要是由選擇器和樣式屬性構(gòu)成。
選擇器
選擇器用來指定要樣式化的控件,選擇器可以使用控件的名稱、類型、ID、類、父子關(guān)系等來進行定位。常見的選擇器有:
- 類型選擇器: QPushButton
- 類選擇器: .mybutton
- ID 選擇器: #mybutton
- 屬性選擇器: QWidget[enabled="false"]
- 父子選擇器: QListWidget > QListWidgetItem
樣式屬性
在 Qt 的 Qss 中,樣式屬性可以分為兩類:控件屬性和子控件屬性,其中控件屬性用于設(shè)置控件自身的樣式,子控件屬性用于設(shè)置控件的子控件的樣式。
常用的控件屬性和樣式如下:
樣式屬性 | 描述 |
---|---|
background | 控件背景色 |
border | 控件邊框 |
color | 控件文本顏色 |
font-size | 控件字體大小 |
font-family | 控件字體 |
padding | 內(nèi)邊距 |
margin | 外邊距 |
text-align | 控件文本對齊方式 |
text-indent | 控件文本縮進 |
opacity | 控件透明度 |
常用的子控件屬性和樣式如下:
樣式屬性 | 描述 |
---|---|
QScrollBar:vertical | 豎向滾動條 |
QScrollBar:horizontal | 橫向滾動條 |
QScrollBar::handle | 滾動條滑塊 |
QScrollBar::add-page | 滾動條向后翻頁按鈕 |
QScrollBar::sub-page | 滾動條向前翻頁按鈕 |
QScrollBar::add-line | 滾動條向后滾動按鈕(小箭頭) |
QScrollBar::sub-line | 滾動條向前滾動按鈕(小箭頭) |
QComboBox QAbstractItemView | 下拉框的列表視圖 |
QComboBox QAbstractItemView::item | 下拉框的列表項 |
示例
下面是一個簡單的 Qss 樣式示例:
QPushButton { ? background: #00bfff; ? color: #fff; ? border: 2px solid #fff; ? font-size: 24px; ? padding: 4px 8px; ? margin: 4px; } QLineEdit { ? background: #fff; ? color: #000; ? border: 2px solid #00bfff; ? padding: 4px 8px; ? margin: 4px; } QComboBox QAbstractItemView { ? background: #fff; ? color: #000; ? border: 2px solid #00bfff; ? padding: 4px 8px; ? margin: 4px; } QComboBox QAbstractItemView::item { ? background: #00bfff; ? color: #fff; ? font-size: 18px; ? padding: 4px 8px; ? margin: 4px; } QScrollBar:vertical { ? background: #fff; ? width: 16px; ? margin: 4px; } QScrollBar::handle:vertical { ? background: #00bfff; ? border-radius: 8px; ? margin: 2px; } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { ? background: none; } QScrollBar:horizontal { ? background: #fff; ? height: 16px; ? margin: 4px; } QScrollBar::handle:horizontal { ? background: #00bfff; ? border-radius: 8px; ? margin: 2px; } QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { ? background: none; }
上面的樣式將會應(yīng)用到 QPushButton、QLineEdit、QComboBox、QScrollBar 等控件上,并且可以看到各個控件的樣式都是不一樣的。其中,QComboBox 還設(shè)置了下拉列表視圖及列表項的樣式。
除了上述基本語法外,Qt 的 Qss 還有一些高級特性。
偽狀態(tài)和偽元素
Qss 支持控件的偽狀態(tài)和偽元素,用來描述控件處于特定狀態(tài)時的樣式。常見的狀態(tài)包括:hover(鼠標懸停時)、pressed(鼠標按下時)、checked(選中狀態(tài))、disabled(不可用狀態(tài))等。
樣式示例:
QPushButton:hover { ? background: #1e90ff; } QPushButton:checked { ? color: #ff4500; }
尺寸和單位
Qss 支持不同的尺寸和單位來定義樣式,包括像素(px)、絕對長度(cm、mm、in、pt、pc)、相對長度(em、ex、rem)、百分比(%)等,用于實現(xiàn)不同尺寸的控件效果。
QPushButton { ? width: 100px; ? height: 30px; } QLabel { ? font-size: 1.5em; } QTextEdit { ? padding: 0.5rem; } QComboBox { ? width: 50%; }
顏色和圖像
Qss 支持使用顏色和圖像來定義控件的背景,邊框和文本顏色等樣式。
顏色示例:
QWidget { ? background-color: red; } QPushButton { ? color: white; ? background-color: rgb(0, 255, 0); } QLineEdit { ? border: 1px solid #ccc; } QLabel { ? color: black; ? background-color: rgba(255, 255, 0, 0.5); }
圖像示例:
QPushButton { ? border-image: url(button.png) 5 5 5 5 stretch; } QLabel { ? background-image: url(background.png); ? background-repeat: no-repeat; ? background-position: center; ? background-size: cover; } QTextEdit { ? background-image: url(paper.jpg); ? background-attachment: fixed; }
動畫效果
Qss 還支持使用動畫效果來實現(xiàn)控件的動態(tài)樣式,通過 @keyframes 和 animation 實現(xiàn)。
樣式示例:
QPushButton:hover { ? animation: pulse 0.5s; } @keyframes pulse { ? 0% {background-color: #1e90ff;} ? 50% {background-color: #00bfff;} ? 100% {background-color: #1e90ff;} }
總結(jié)
到此這篇關(guān)于Qt的Qss用法小結(jié)的文章就介紹到這了,更多相關(guān)Qt Qss內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++ 入門——淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)
這篇文章主要介紹了c++ 淺析構(gòu)造函數(shù)和析構(gòu)函數(shù)的相關(guān)資料,幫助大家入門c++ 編程,感興趣的朋友可以了解下2020-08-08C++基礎(chǔ)學(xué)習之利用兩個棧實現(xiàn)一個隊列
這篇文章主要給大家介紹了關(guān)于C++基礎(chǔ)學(xué)習之利用兩個棧實現(xiàn)一個隊列的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用C++具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧2019-05-05C++?protobuf中對不同消息內(nèi)容進行賦值的方式總結(jié)(set_、set_allocated_、mutable_、
這篇文章主要給大家介紹了關(guān)于C++?protobuf中對不同消息內(nèi)容進行賦值的方式總結(jié),主要使用的是set_、set_allocated_、mutable_、add_,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-03-03Qt模仿Windows文件夾縮略圖的三種實現(xiàn)方式
本文講的不是簡單的model/view或者widget的或者QML的基礎(chǔ)框架實現(xiàn),而是在這些框架之上的肉(文件夾縮略圖)的效果實現(xiàn),本文將以QWidget、Qt Quick(QML)、以及QGraph三種實現(xiàn)方式來講解,如何做出和Windows類似的縮略圖,需要的朋友可以參考下2024-04-04C/C++中關(guān)于std::string的compare陷阱示例詳解
這篇文章主要給大家介紹了關(guān)于C/C++中關(guān)于std::string的compare陷阱的相關(guān)資料,文中先對C/C++中的std::string進行了簡單的介紹,通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習學(xué)習吧。2017-11-11