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