您好,登錄后才能下訂單哦!
本文主要翻譯自QT官方文檔Qt Style Sheets 。
QT樣式表支持多種的屬性、狀態和子控件,使得定制組件的外觀成為可能。
以下組件都可以使用樣式表定制樣式。
組件 | 如何設置樣式 |
QAbstractScrollArea | 支持盒子模型。 QAbstractScrollArea的所有繼承類,包括QTextEdit和QAbstractItemView(所有的項視圖類),都支持可滾動的背景,使用background-p_w_upload來設置是否滾動。將background-p_w_upload設置成fixed的話,就會使得background-p_w_picpath不隨視口(viewport)而滾動。如果將background-p_w_upload設置成scroll,移動滾動條時,background-p_w_picpath會滾動。 參考自定義QAbstractScrollArea的示例。 |
QCheckBox | 支持盒子模型。選中狀態的指示器可使用::indicator子控件(subcontrol)來進行樣式設置。默認情況下,指示器放在組件的內容矩形的左上角。 spacing屬性指定選中狀態指示器與文字之間的空隙。 參考自定義QCheckBox示例。 |
QColumnView | 可使用p_w_picpath屬性來對收縮狀態進行樣式設置。箭頭指示器(arrow indicators)可使用::left-arrow和::right-arrow子控件來進行樣式設置。 |
QComboBox | 組合框的框架(frame)可使用盒子模型來進行樣式設置。下拉按鈕可使用::drop-down子控件來進行樣式設置。默認情況下,下拉按鈕放置在組件的襯底區域的右上角。下拉按鈕中的箭頭標志可使用::down-arrow子控件來進行樣式設置。默認情況下,箭頭是放置在下拉按鈕子控件的內容區域的中心。 參考自定義QComboBox示例。 |
QDialog | 只支持background、background-clip和background-origin屬性。 警告:確保在自定義的組件中定義了Q_OBJECT宏。 |
QDialogButtonBox | 按鈕的布局方式可使用button-layout屬性來改變。 |
QDockWidget | 在停靠狀態(docked),支持對標題欄和標題欄的按鈕進行樣式設置。 停靠組件的邊框(border)可使用border屬性來進行樣式設置。::title子控件可用來對標題欄進行樣式設置。關閉按鈕和懸浮按鈕相對于::title子控件的位置可分別使用::close-button和::float-button來進行設置。如果標題欄是豎直的,會設置:vertical偽類。 此外,根據QDockWidget::DockWidgetFeature值,設置:closable、:floatable和:movable偽狀態。 注意:使用QMainWindow::separator對改變大小的句柄進行樣式設置。 警告:在QDockWidget不處于停靠狀態時,樣式表無效。 參考自定義QDockWidget示例。 |
QFrame | 支持盒子模型。 從QT4.3 開始,對QLabel設置樣式表,會自動將QFrame::frameStyle屬性設置成QFrame::StyledPanel。 參考自定義QFrame示例。 |
QGroupBox | 支持盒子模型。標題可使用::title子控件來進行樣式設置。默認情況下,標題根據QGroupBox::textAlignment 屬性進行定位。 對于選中的QGroupBox,標題包含選中狀態指示器。指示器可使用::indicator子控件來進行樣式設置。spacing屬性用來設置文字與指示器之間的間隔。 參考自定義QGroupBox示例。 |
QHeaderView | 支持盒子模型。表頭視圖的各個區域使用::section子控件來進行樣式設置的。section子控件支持:middle、:first、:last、 only-one、 :next-selected、:previous-selected、:selected和:checked偽狀態。 排序指示器使用::up-arrow和::down-arrow子控件來進行樣式設置。 參考自定義QHeaderView示例。 |
QLabel | 支持盒子模型。不支持:hover偽狀態。 從QT4.3 開始,對QLabel設置樣式表會自動將QFrame::frameStyle 屬性設置成QFrame::StyledPanel。 參考自定義QFrame示例(QLabel繼承自QFrame)。 |
QLineEdit | 支持盒子模型。 選中的項的顏色和背景分別是使用selection-color和selection-background-color來進行樣式設置。 密碼字符可使用lineedit-password-character屬性來進行樣式設置。 密碼掩碼延遲可使用lineedit-password-mask-delay屬性修改。 參考自定義QLineEdit示例。 |
QListView/ QListWidget | 支持盒子模型。如果交替改變行顏色功能打開,交替的顏色使用alternate-background-color屬性來進行樣式設置。 選中的項的顏色和背景分別是使用selection-color和selection-background-color來進行樣式設置。 選擇行為由show-decoration-selected屬性來進行控制。 使用::item子控件來對QListView中的項進行更精細控制。 參考QAbsractScrollArea以了解對可滾動的背景的樣式設置。 參考自定義QListView示例。 |
QMainWindow | 支持對分隔符進行樣式設置。 在QMainWindow中使用QDockWidget時產生的分隔符使用::separator子控件來進行樣式設置。 參考自定義QMainWindow示例。 |
QMenu | 支持盒子模型。 單個的項使用::item子控件來進行樣式設置。除通常的偽狀態外,item子控件還支持:selected、:default、:exclusive和non-exclusive偽狀態。 復選選的菜單項指示器是通過::indicator子控件來進行樣式設置。 分隔符是使用::separator子控件進行樣式設置。 對于有子菜單的項,箭頭標記是使用right-arrow和left-arrow進行樣式設置。 滾動器使用::scroller進行樣式設置。 分離菜單使用::tearoff來進行樣式設置。 參考自定義QMenu示例。 |
QMenuBar | 支持盒子模型。spacing屬性指定菜單項之間的空隙大小。 單個的項使用::item子控件進行樣式設置。 警告:在Qt/Mac平臺上,菜單欄通常嵌入到系統的全局菜單條中。在這種情況下,樣式單無效。 參考自定義QMenuBar示例。 |
QMessageBox | messagebox-text-interaction-flags屬性用來選擇消息框中文字的交互模式。 |
QProgressBar | 支持盒子模型。進度條的進度塊使用::chunk子控件來進行樣式設置。進度塊顯示在組件的內容區域中。 如果進度條顯示文字,使用text-align屬性來設置文字的位置。 不確定的進度條使用:indeterminate偽狀態設置。 參考自定義QProgressBar示例。 |
QPushButton | 支持盒子模型。支持:default、:flat、:checked偽狀態。 對于帶菜單的QPushButton,其菜單指示器是使用::menu-indicator子控件來進行樣式設置的。復選的按鈕的外觀可使用:pen和:closed偽狀態進行樣式設置。 警告:如果只為QPushButton設置background-color,背景可能不會顯示出來,除非將邊框屬性設置成某個值。這是因為,在默認情況下,QPushButton會繪制一個完全覆蓋了背景色的本地邊框。例如, QPushButton { background-color: red; border: none; } 參考自定義QPushButton示例。 |
QRadioButton | 支持盒子模型。選中指示器使用::indicator子控件進行樣式設置。默認情況下,指示器放置在組件內容區域的左上角。 spacing屬性指定選中指示器與文字之間的空隙。 參考自定義QRadioButton示例。 |
QScrollBar | 支持盒子模型。組件中的內容區域就是滑塊滑動的槽。QScrollBar的廣度是使用width或height屬性設置的。要確定方向,使用:horizontal和:vertical偽狀態。 滑塊使用::handle子控件進行樣式設置。設置min-width或min-height按照方向來對滑塊提供尺寸的限制。 ::add-line子控件用來對增加一行的按鈕進行樣式設置。默認情況下,add-line子控件放置在組件邊框區域的右下角。默認情況下,箭頭放置在::add-line子控件內容區域的中心。 ::sub-line子控件用來對減少一行的按鈕進行樣式設置。默認情況下,sub-line子控件被放置在組件邊框區域的左上角。默認情況下,箭頭放置在sub-line子控件內容區域的中心。 ::sub-page子控件用來對減一頁作用的滑塊區域進行樣式設置。::add-page子控件用來對起到加一頁作用的滑塊區域進行樣式設置。 參考自定義QScrollBar示例。 |
QSizeGrip | 支持width、height和p_w_picpath屬性。 參考自定義QSizeGrip示例。 |
QSlider | 支持盒子模型。對于水平滑動器,必須提供min-width和height屬性。對于豎直滑動器,必須提供min-height和width屬性。 滑動器的滑槽使用::groove進行樣式設置。默認情況下,滑槽被放置在組件的內容區域中。滑動器的滑塊使用::handle子控件進行樣式設置。子控件在滑槽的內容區域中移動。 參考自定義QSlider示例。 |
QSpinBox QDateEdit QDateTimeEdit QDoubleSpinBox QTimeEdit | 旋轉框的框架使用盒子模型來進行樣式設置。 向上按鈕和箭頭可使用::up-button和::up-arrow子控件來進行樣式設置。默認情況下,向上按鈕被放置在組件填充區域的右上角。如果沒有顯式設置尺寸,會占據參考區域的一半高度。向上箭頭被放置在向上按鈕的內容區域的中心。 向下按鈕和箭頭使用::down-button和::down-arrow子控件進行樣式設置。默認情況下,向下按鈕被放置在組件填充區域的右下角。如果沒有顯式設置尺寸,會占據參考區域的一半高度。向下箭頭被放置在向下按鈕的內容區域的中心。 參考自定義QSpinBox示例。 |
QSplitter | 支持盒子模型。分割器的句柄使用::handle子控件進行樣式設置。 參考自定義QSplitter示例。 |
QStatusBar | 只支持background屬性。單個項的框架使用::item子控件進行樣式設置。 參考自定義QStatusBar示例。 |
QTabBar | 單個標簽使用::tab子控件進行樣式設置。關閉按鈕使用::close-button子控件進行樣式設置。標簽支持 only-one、:first、:last、:middle、:previous–selected、:next-selected、:selected偽狀態。 標簽的方向決定是否有:top、:left、:right、:bottom偽狀態。 對于選中狀態的重疊標簽通過使用負數的邊距或絕對位置模式來創建。 QTabBar的分離指示器使用::tear子控件進行樣式設置。 QTabBar用兩個QToolButtons作為滾動器,使用QTabBar QToolButton選擇器進行樣式設置。使用::scroller子控件指定滾動按鈕的寬度。 QTabBar中標簽的對齊方式使用alignment屬性進行設置。 警告:要改變QTabWidget中的QTabBar的位置,使用tab-bar子控件。 參考自定義QTabBar示例。 |
QTabWidget | 標簽組件的框架使用::pane子控件進行樣式設置。左邊角和右邊角分別使用::left-corner和::right-corner進行樣式設置。標簽條的位置使用::tab-bar子控件控制。 默認情況下,QTabWidget的子控件的位置按照QWindowsStyle風格來確定。要將QTabBar放置在中央的位置,設置tab-bar子控件的subcontrol-position屬性。 標簽組方向決定是否有:top、:left、:right、:bottom偽狀態。 參考自定義QTabWidget示例。 |
QTableView | 支持盒子模型。如果交替改變行顏色功能開啟,交替的顏色使用alternate-background-color屬性進行樣式設置。 選中的項的顏色和背景分別是使用selection-color和selection-background-color進行樣式設置。 QTableView中的邊角組件由QAbstractButton實現,使用QTableViewQTableCornerButton::section選擇器進行樣式設置。 警告:如果只在QTableCornerButton上設置背景色,背景可能不會顯示出來,除非將邊框屬性設置成某個值。這是因為,默認情況下,QTableCornerButton會繪制一個完全覆蓋背景色的本地邊框。 網格的顏色使用gridline-color屬性進行設置。 參考QAbsractScrollArea以了解如何設置可滾動的背景。 參考自定義QTableView示例。 |
QTextEdit | 支持盒子模型。 選中文字的顏色和背景分別使用selection-color和selection-background-color進行樣式設置。 參考QAbsractScrollArea以了解如何設置可滾動的背景。 |
QToolBar | 支持盒子模型。 工具欄所在的區域(停靠方向)決定是否會有:top、:left、:right、:bottom偽狀態。 :first、:last、:middle、:only-one偽狀態指示工具欄的位置是一個線性組(參考QStyleOptionToolBar::positionWithinLine) QToolBar的分隔符使用::separator子控件進行樣式設置。 用來移動工具欄的句柄使用::handle子控件進行樣式設置。 參考自定義QToolBar示例。 |
QToolButton | 支持盒子模型。 如果QToolButton有菜單,::menu-indicator子控件用來對菜單指示器進行樣式設置。默認情況下,菜單指示器放置在組件填充區域的右下角。 如果QToolButton是QToolButton::MenuButtonPopup模式,::menu-button子控件用來繪制菜單按鈕。::menu-arrow子控件用來在菜單按鈕里面繪制菜單箭頭。默認情況下,菜單按鈕子控件位于內容區域的中心。 當QToolButton顯示箭頭時,會使用::up-arrow、::down-arrow、::left-arrow和::right-arrow子控件。 警告:如果只在QToolButton 設置背景色,背景可能不會顯示出來,除非將邊框屬性設置成某個值。這是因為,默認情況下,QToolButton會繪制一個完全覆蓋背景色的本地邊框。例如, QToolButton { background-color: red; border: none; } 參考自定義QToolButton示例。 |
QToolBox | 支持盒子模型。 單個標簽使用::tab子控件進行樣式設置。標簽支持 :only-one、:first、:last、:middle、:previous-selected、:next-selected、:selected偽狀態。 |
QToolTip | 支持盒子模型。opacity屬性控制工具提示的透明度。 參考自定義QFrame示例(QToolTip是QFrame)。 |
QTreeView QTreeWidget QTableWidget | 支持盒子模型。如果交替改變行顏色功能開啟,交替的顏色使用alternate-background-color屬性進行樣式設置。 選中項的顏色和背景分別是使用selection-color和selection-background-color進行樣式設置。 選擇行為由show-decoration-selected屬性進行控制。 樹型視圖的分支使用::branch子控件進行樣式設置。::branch子控件支持:open、:closed、:has-sibling和:has-children偽狀態。 使用::item子控件對QTreeView中的項進行更精細控制。 參考QAbsractScrollArea以了解如何設置可滾動的背景。 參考自定義QTreeView示例以了解如何對分支進行樣式設置。 |
QWidget | 只支持background、background-clip和background-origin屬性。 如果從QWidget派生子類,需要為自定義組件提供繪制事件處理函數(paintEvent): void CustomWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } 如果沒有設置樣式單,以上的代碼不起任何作用。 警告:確保在自定義組件中定義了Q_OBJECT宏。 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。