重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
本文主要翻譯自QT官方文檔Qt Style Sheets 。
QT樣式表支持多種的屬性、狀態(tài)和子控件,使得定制組件的外觀成為可能。
以下組件都可以使用樣式表定制樣式。
組件 | 如何設(shè)置樣式 |
QAbstractScrollArea | 支持盒子模型。 QAbstractScrollArea的所有繼承類,包括QTextEdit和QAbstractItemView(所有的項(xiàng)視圖類),都支持可滾動(dòng)的背景,使用background-p_w_upload來設(shè)置是否滾動(dòng)。將background-p_w_upload設(shè)置成fixed的話,就會(huì)使得background-p_w_picpath不隨視口(viewport)而滾動(dòng)。如果將background-p_w_upload設(shè)置成scroll,移動(dòng)滾動(dòng)條時(shí),background-p_w_picpath會(huì)滾動(dòng)。 參考自定義QAbstractScrollArea的示例。 |
QCheckBox | 支持盒子模型。選中狀態(tài)的指示器可使用::indicator子控件(subcontrol)來進(jìn)行樣式設(shè)置。默認(rèn)情況下,指示器放在組件的內(nèi)容矩形的左上角。 spacing屬性指定選中狀態(tài)指示器與文字之間的空隙。 參考自定義QCheckBox示例。 |
QColumnView | 可使用p_w_picpath屬性來對(duì)收縮狀態(tài)進(jìn)行樣式設(shè)置。箭頭指示器(arrow indicators)可使用::left-arrow和::right-arrow子控件來進(jìn)行樣式設(shè)置。 |
QComboBox | 組合框的框架(frame)可使用盒子模型來進(jìn)行樣式設(shè)置。下拉按鈕可使用::drop-down子控件來進(jìn)行樣式設(shè)置。默認(rèn)情況下,下拉按鈕放置在組件的襯底區(qū)域的右上角。下拉按鈕中的箭頭標(biāo)志可使用::down-arrow子控件來進(jìn)行樣式設(shè)置。默認(rèn)情況下,箭頭是放置在下拉按鈕子控件的內(nèi)容區(qū)域的中心。 參考自定義QComboBox示例。 |
QDialog | 只支持background、background-clip和background-origin屬性。 警告:確保在自定義的組件中定義了Q_OBJECT宏。 |
QDialogButtonBox | 按鈕的布局方式可使用button-layout屬性來改變。 |
QDockWidget | 在??繝顟B(tài)(docked),支持對(duì)標(biāo)題欄和標(biāo)題欄的按鈕進(jìn)行樣式設(shè)置。 停靠組件的邊框(border)可使用border屬性來進(jìn)行樣式設(shè)置。::title子控件可用來對(duì)標(biāo)題欄進(jìn)行樣式設(shè)置。關(guān)閉按鈕和懸浮按鈕相對(duì)于::title子控件的位置可分別使用::close-button和::float-button來進(jìn)行設(shè)置。如果標(biāo)題欄是豎直的,會(huì)設(shè)置:vertical偽類。 此外,根據(jù)QDockWidget::DockWidgetFeature值,設(shè)置:closable、:floatable和:movable偽狀態(tài)。 注意:使用QMainWindow::separator對(duì)改變大小的句柄進(jìn)行樣式設(shè)置。 警告:在QDockWidget不處于??繝顟B(tài)時(shí),樣式表無效。 參考自定義QDockWidget示例。 |
QFrame | 支持盒子模型。 從QT4.3 開始,對(duì)QLabel設(shè)置樣式表,會(huì)自動(dòng)將QFrame::frameStyle屬性設(shè)置成QFrame::StyledPanel。 參考自定義QFrame示例。 |
QGroupBox | 支持盒子模型。標(biāo)題可使用::title子控件來進(jìn)行樣式設(shè)置。默認(rèn)情況下,標(biāo)題根據(jù)QGroupBox::textAlignment 屬性進(jìn)行定位。 對(duì)于選中的QGroupBox,標(biāo)題包含選中狀態(tài)指示器。指示器可使用::indicator子控件來進(jìn)行樣式設(shè)置。spacing屬性用來設(shè)置文字與指示器之間的間隔。 參考自定義QGroupBox示例。 |
QHeaderView | 支持盒子模型。表頭視圖的各個(gè)區(qū)域使用::section子控件來進(jìn)行樣式設(shè)置的。section子控件支持:middle、:first、:last、 :next-selected、:previous-selected、:selected和:checked偽狀態(tài)。 排序指示器使用::up-arrow和::down-arrow子控件來進(jìn)行樣式設(shè)置。 參考自定義QHeaderView示例。 |
QLabel | 支持盒子模型。不支持:hover偽狀態(tài)。 從QT4.3 開始,對(duì)QLabel設(shè)置樣式表會(huì)自動(dòng)將QFrame::frameStyle 屬性設(shè)置成QFrame::StyledPanel。 參考自定義QFrame示例(QLabel繼承自QFrame)。 |
QLineEdit | 支持盒子模型。 選中的項(xiàng)的顏色和背景分別是使用selection-color和selection-background-color來進(jìn)行樣式設(shè)置。 密碼字符可使用lineedit-password-character屬性來進(jìn)行樣式設(shè)置。 密碼掩碼延遲可使用lineedit-password-mask-delay屬性修改。 參考自定義QLineEdit示例。 |
QListView/ QListWidget | 支持盒子模型。如果交替改變行顏色功能打開,交替的顏色使用alternate-background-color屬性來進(jìn)行樣式設(shè)置。 選中的項(xiàng)的顏色和背景分別是使用selection-color和selection-background-color來進(jìn)行樣式設(shè)置。 選擇行為由show-decoration-selected屬性來進(jìn)行控制。 使用::item子控件來對(duì)QListView中的項(xiàng)進(jìn)行更精細(xì)控制。 參考QAbsractScrollArea以了解對(duì)可滾動(dòng)的背景的樣式設(shè)置。 參考自定義QListView示例。 |
QMainWindow | 支持對(duì)分隔符進(jìn)行樣式設(shè)置。 在QMainWindow中使用QDockWidget時(shí)產(chǎn)生的分隔符使用::separator子控件來進(jìn)行樣式設(shè)置。 參考自定義QMainWindow示例。 |
QMenu | 支持盒子模型。 單個(gè)的項(xiàng)使用::item子控件來進(jìn)行樣式設(shè)置。除通常的偽狀態(tài)外,item子控件還支持:selected、:default、:exclusive和non-exclusive偽狀態(tài)。 復(fù)選選的菜單項(xiàng)指示器是通過::indicator子控件來進(jìn)行樣式設(shè)置。 分隔符是使用::separator子控件進(jìn)行樣式設(shè)置。 對(duì)于有子菜單的項(xiàng),箭頭標(biāo)記是使用right-arrow和left-arrow進(jìn)行樣式設(shè)置。 滾動(dòng)器使用::scroller進(jìn)行樣式設(shè)置。 分離菜單使用::tearoff來進(jìn)行樣式設(shè)置。 參考自定義QMenu示例。 |
QMenuBar | 支持盒子模型。spacing屬性指定菜單項(xiàng)之間的空隙大小。 單個(gè)的項(xiàng)使用::item子控件進(jìn)行樣式設(shè)置。 警告:在Qt/Mac平臺(tái)上,菜單欄通常嵌入到系統(tǒng)的全局菜單條中。在這種情況下,樣式單無效。 參考自定義QMenuBar示例。 |
QMessageBox | messagebox-text-interaction-flags屬性用來選擇消息框中文字的交互模式。 |
QProgressBar | 支持盒子模型。進(jìn)度條的進(jìn)度塊使用::chunk子控件來進(jìn)行樣式設(shè)置。進(jìn)度塊顯示在組件的內(nèi)容區(qū)域中。 如果進(jìn)度條顯示文字,使用text-align屬性來設(shè)置文字的位置。 不確定的進(jìn)度條使用:indeterminate偽狀態(tài)設(shè)置。 參考自定義QProgressBar示例。 |
QPushButton | 支持盒子模型。支持:default、:flat、:checked偽狀態(tài)。 對(duì)于帶菜單的QPushButton,其菜單指示器是使用::menu-indicator子控件來進(jìn)行樣式設(shè)置的。復(fù)選的按鈕的外觀可使用:pen和:closed偽狀態(tài)進(jìn)行樣式設(shè)置。 警告:如果只為QPushButton設(shè)置background-color,背景可能不會(huì)顯示出來,除非將邊框?qū)傩栽O(shè)置成某個(gè)值。這是因?yàn)?,在默認(rèn)情況下,QPushButton會(huì)繪制一個(gè)完全覆蓋了背景色的本地邊框。例如, QPushButton { background-color: red; border: none; } 參考自定義QPushButton示例。 |
QRadioButton | 支持盒子模型。選中指示器使用::indicator子控件進(jìn)行樣式設(shè)置。默認(rèn)情況下,指示器放置在組件內(nèi)容區(qū)域的左上角。 spacing屬性指定選中指示器與文字之間的空隙。 參考自定義QRadioButton示例。 |
QScrollBar | 支持盒子模型。組件中的內(nèi)容區(qū)域就是滑塊滑動(dòng)的槽。QScrollBar的廣度是使用width或height屬性設(shè)置的。要確定方向,使用:horizontal和:vertical偽狀態(tài)。 滑塊使用::handle子控件進(jìn)行樣式設(shè)置。設(shè)置min-width或min-height按照方向來對(duì)滑塊提供尺寸的限制。 ::add-line子控件用來對(duì)增加一行的按鈕進(jìn)行樣式設(shè)置。默認(rèn)情況下,add-line子控件放置在組件邊框區(qū)域的右下角。默認(rèn)情況下,箭頭放置在::add-line子控件內(nèi)容區(qū)域的中心。 ::sub-line子控件用來對(duì)減少一行的按鈕進(jìn)行樣式設(shè)置。默認(rèn)情況下,sub-line子控件被放置在組件邊框區(qū)域的左上角。默認(rèn)情況下,箭頭放置在sub-line子控件內(nèi)容區(qū)域的中心。 ::sub-page子控件用來對(duì)減一頁(yè)作用的滑塊區(qū)域進(jìn)行樣式設(shè)置。::add-page子控件用來對(duì)起到加一頁(yè)作用的滑塊區(qū)域進(jìn)行樣式設(shè)置。 參考自定義QScrollBar示例。 |
QSizeGrip | 支持width、height和p_w_picpath屬性。 參考自定義QSizeGrip示例。 |
QSlider | 支持盒子模型。對(duì)于水平滑動(dòng)器,必須提供min-width和height屬性。對(duì)于豎直滑動(dòng)器,必須提供min-height和width屬性。 滑動(dòng)器的滑槽使用::groove進(jìn)行樣式設(shè)置。默認(rèn)情況下,滑槽被放置在組件的內(nèi)容區(qū)域中。滑動(dòng)器的滑塊使用::handle子控件進(jìn)行樣式設(shè)置。子控件在滑槽的內(nèi)容區(qū)域中移動(dòng)。 參考自定義QSlider示例。 |
QSpinBox QDateEdit QDateTimeEdit QDoubleSpinBox QTimeEdit | 旋轉(zhuǎn)框的框架使用盒子模型來進(jìn)行樣式設(shè)置。 向上按鈕和箭頭可使用::up-button和::up-arrow子控件來進(jìn)行樣式設(shè)置。默認(rèn)情況下,向上按鈕被放置在組件填充區(qū)域的右上角。如果沒有顯式設(shè)置尺寸,會(huì)占據(jù)參考區(qū)域的一半高度。向上箭頭被放置在向上按鈕的內(nèi)容區(qū)域的中心。 向下按鈕和箭頭使用::down-button和::down-arrow子控件進(jìn)行樣式設(shè)置。默認(rèn)情況下,向下按鈕被放置在組件填充區(qū)域的右下角。如果沒有顯式設(shè)置尺寸,會(huì)占據(jù)參考區(qū)域的一半高度。向下箭頭被放置在向下按鈕的內(nèi)容區(qū)域的中心。 參考自定義QSpinBox示例。 |
QSplitter | 支持盒子模型。分割器的句柄使用::handle子控件進(jìn)行樣式設(shè)置。 參考自定義QSplitter示例。 |
QStatusBar | 只支持background屬性。單個(gè)項(xiàng)的框架使用::item子控件進(jìn)行樣式設(shè)置。 參考自定義QStatusBar示例。 |
QTabBar | 單個(gè)標(biāo)簽使用::tab子控件進(jìn)行樣式設(shè)置。關(guān)閉按鈕使用::close-button子控件進(jìn)行樣式設(shè)置。標(biāo)簽支持 only-one、:first、:last、:middle、:previous–selected、:next-selected、:selected偽狀態(tài)。 標(biāo)簽的方向決定是否有:top、:left、:right、:bottom偽狀態(tài)。 對(duì)于選中狀態(tài)的重疊標(biāo)簽通過使用負(fù)數(shù)的邊距或絕對(duì)位置模式來創(chuàng)建。 QTabBar的分離指示器使用::tear子控件進(jìn)行樣式設(shè)置。 QTabBar用兩個(gè)QToolButtons作為滾動(dòng)器,使用QTabBar QToolButton選擇器進(jìn)行樣式設(shè)置。使用::scroller子控件指定滾動(dòng)按鈕的寬度。 QTabBar中標(biāo)簽的對(duì)齊方式使用alignment屬性進(jìn)行設(shè)置。 警告:要改變QTabWidget中的QTabBar的位置,使用tab-bar子控件。 參考自定義QTabBar示例。 |
QTabWidget | 標(biāo)簽組件的框架使用::pane子控件進(jìn)行樣式設(shè)置。左邊角和右邊角分別使用::left-corner和::right-corner進(jìn)行樣式設(shè)置。標(biāo)簽條的位置使用::tab-bar子控件控制。 默認(rèn)情況下,QTabWidget的子控件的位置按照QWindowsStyle風(fēng)格來確定。要將QTabBar放置在中央的位置,設(shè)置tab-bar子控件的subcontrol-position屬性。 標(biāo)簽組方向決定是否有:top、:left、:right、:bottom偽狀態(tài)。 參考自定義QTabWidget示例。 |
QTableView | 支持盒子模型。如果交替改變行顏色功能開啟,交替的顏色使用alternate-background-color屬性進(jìn)行樣式設(shè)置。 選中的項(xiàng)的顏色和背景分別是使用selection-color和selection-background-color進(jìn)行樣式設(shè)置。 QTableView中的邊角組件由QAbstractButton實(shí)現(xiàn),使用QTableViewQTableCornerButton::section選擇器進(jìn)行樣式設(shè)置。 警告:如果只在QTableCornerButton上設(shè)置背景色,背景可能不會(huì)顯示出來,除非將邊框?qū)傩栽O(shè)置成某個(gè)值。這是因?yàn)椋J(rèn)情況下,QTableCornerButton會(huì)繪制一個(gè)完全覆蓋背景色的本地邊框。 網(wǎng)格的顏色使用gridline-color屬性進(jìn)行設(shè)置。 參考QAbsractScrollArea以了解如何設(shè)置可滾動(dòng)的背景。 參考自定義QTableView示例。 |
QTextEdit | 支持盒子模型。 選中文字的顏色和背景分別使用selection-color和selection-background-color進(jìn)行樣式設(shè)置。 參考QAbsractScrollArea以了解如何設(shè)置可滾動(dòng)的背景。 |
QToolBar | 支持盒子模型。 工具欄所在的區(qū)域(??糠较颍Q定是否會(huì)有:top、:left、:right、:bottom偽狀態(tài)。 :first、:last、:middle、:only-one偽狀態(tài)指示工具欄的位置是一個(gè)線性組(參考QStyleOptionToolBar::positionWithinLine) QToolBar的分隔符使用::separator子控件進(jìn)行樣式設(shè)置。 用來移動(dòng)工具欄的句柄使用::handle子控件進(jìn)行樣式設(shè)置。 參考自定義QToolBar示例。 |
QToolButton | 支持盒子模型。 如果QToolButton有菜單,::menu-indicator子控件用來對(duì)菜單指示器進(jìn)行樣式設(shè)置。默認(rèn)情況下,菜單指示器放置在組件填充區(qū)域的右下角。 如果QToolButton是QToolButton::MenuButtonPopup模式,::menu-button子控件用來繪制菜單按鈕。::menu-arrow子控件用來在菜單按鈕里面繪制菜單箭頭。默認(rèn)情況下,菜單按鈕子控件位于內(nèi)容區(qū)域的中心。 當(dāng)QToolButton顯示箭頭時(shí),會(huì)使用::up-arrow、::down-arrow、::left-arrow和::right-arrow子控件。 警告:如果只在QToolButton 設(shè)置背景色,背景可能不會(huì)顯示出來,除非將邊框?qū)傩栽O(shè)置成某個(gè)值。這是因?yàn)椋J(rèn)情況下,QToolButton會(huì)繪制一個(gè)完全覆蓋背景色的本地邊框。例如, QToolButton { background-color: red; border: none; } 參考自定義QToolButton示例。 |
QToolBox | 支持盒子模型。 單個(gè)標(biāo)簽使用::tab子控件進(jìn)行樣式設(shè)置。標(biāo)簽支持 :only-one、:first、:last、:middle、:previous-selected、:next-selected、:selected偽狀態(tài)。 |
QToolTip | 支持盒子模型。opacity屬性控制工具提示的透明度。 參考自定義QFrame示例(QToolTip是QFrame)。 |
QTreeView QTreeWidget QTableWidget | 支持盒子模型。如果交替改變行顏色功能開啟,交替的顏色使用alternate-background-color屬性進(jìn)行樣式設(shè)置。 選中項(xiàng)的顏色和背景分別是使用selection-color和selection-background-color進(jìn)行樣式設(shè)置。 選擇行為由show-decoration-selected屬性進(jìn)行控制。 樹型視圖的分支使用::branch子控件進(jìn)行樣式設(shè)置。::branch子控件支持:open、:closed、:has-sibling和:has-children偽狀態(tài)。 使用::item子控件對(duì)QTreeView中的項(xiàng)進(jìn)行更精細(xì)控制。 參考QAbsractScrollArea以了解如何設(shè)置可滾動(dòng)的背景。 參考自定義QTreeView示例以了解如何對(duì)分支進(jìn)行樣式設(shè)置。 |
QWidget | 只支持background、background-clip和background-origin屬性。 如果從QWidget派生子類,需要為自定義組件提供繪制事件處理函數(shù)(paintEvent): void CustomWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } 如果沒有設(shè)置樣式單,以上的代碼不起任何作用。 警告:確保在自定義組件中定義了Q_OBJECT宏。 |
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。