Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference

内容

Qt样式单参考

Qt样式单支持各种属性、伪状态和子控件,这样使得妳能够自行设计部件的外观。

可进行样式设置的部件列表

下表列出的是可使用样式单来自定义其外观的Qt 部件:

部件

如何设置样式

QAbstractScrollArea

支持盒状模型

QAbstractScrollArea的所有继承类,包括QTextEditQAbstractItemView(所有的条目视图(item view)类),都支持可滚动的背景,使用background-attachment来设置是否滚动。将background-attachment 设置成fixed的话,就会使得背景图片(background-image)不随视口(viewport)而滚动。如果将background-attachment 设置成scroll,那么在移动滚动条时,背景图片也会移动。

参考自定义QAbstractScrollArea的示例。

QCheckBox

支持盒状模型。选中状态的指示器可使用::indicator子控件(subcontrol)来进行样式设置。默认情况下,指示器是放在部件的内容(Contents)区域的左(Left)上(Top)角。

spacing属性控制的是选中状态指示器与文字之间的空隙。

参考自定义QCheckBox示例。

QColumnView

可使用image属性来对网格(grip)进行样式设置。箭头指示器(arrow indicators)可使用::left-arrow::right-arrow子控件来进行样式设置。

QComboBox

组合框周围的框架(frame)可使用盒状模型来进行样式设置。下拉按钮可使用::drop-down子控件来进行样式设置。默认情况下,下拉按钮是放置在部件的填充(padding)区域的右上角。下拉按钮中的箭头标志可使用::down-arrow子控件来进行样式设置。默认情况下,箭头是放置在下拉按钮子控件的内容区域的中央。

参考自定义QComboBox示例。

QDateEdit

参考QSpinBox

QDateTimeEdit

参考QSpinBox

QDialog

只支持backgroundbackground-clipbackground-origin属性。

警告:确保妳在自定义的部件中定义咯Q_OBJECT宏。

QDialogButtonBox

按钮的布局方式可使用button-layout属性来改变。

QDockWidget

在停靠状态(docked),支持对标题栏和标题栏的按钮进行样式设置。

停靠部件的边框(border)可使用border属性来进行样式设置。::title子控件可用来对标题栏进行样式设置。关闭按钮和漂浮按钮可分别使用::close-button::float-button来相对于(with respect to)::title子控件进行位置设置。如果标题栏是竖直的,那么就会存在(is set):vertical伪类。另外,取决于QDockWidget::DockWidgetFeature的值,:closable:floatable:movable伪状态也可能存在。

注意:使用QMainWindow::separator 来对改变大小的手柄(resize handle)进行样式设置。

警告:QDockWidget不处于停靠状态(undocked)时,样式单无效,∵Qt 在未停靠状态会使用原生(native)的顶级窗口。

参考自定义QDockWidget示例。

QDoubleSpinBox

参考QSpinBox

QFrame

支持盒状模型

从4.3 开始,对一個QLabel设置样式单的话,會自动将QFrame::frameStyle 属性设置成QFrame::StyledPanel

参考自定义QFrame示例。

QGroupBox

支持盒状模型。标题可使用::title子控件来进行样式设置。默认情况下,标题是按照QGroupBox::textAlignment 来放置位置的。

如果是一個可选中(checkable)的QGroupBox的话,那么标题也包含选中状态指示器。指示器可使用::indicator子控件来进行样式设置。spacing属性可用来控制文字与指示器之间的间隔。

参考自定义QGroupBox示例。

QHeaderView

支持盒状模型。表头视图(header view)的各个节区(sections)是使用::section子控件来进行样式设置的。section子控件支持:middle:first:last  nly-one:next-selected:previous-selected:selected:checked伪状态。

排序指示器可使用::up-arrow::down-arrow子控件来进行样式设置。

参考自定义QHeaderView示例。

QLabel

支持盒状模型。不支持:hover伪状态。

从4.3 开始,对一個QLabel设置样式单的话,會自动将QFrame::frameStyle 属性设置成QFrame::StyledPanel

参考自定义QFrame示例(QLabel继承自QFrame)。

QLineEdit

支持盒状模型

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

密码字符可使用lineedit-password-character属性来进行样式设置。

参考自定义QLineEdit示例。

QListView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

选择行为是由show-decoration-selected属性来进行控制的。

使用::item子控件来对QListView中的条目进行更精细的控制。

参考QAbsractScrollArea以了解对可滚动的背景的样式设置。

参考自定义QListView示例。

QListWidget

参考QListView

QMainWindow

支持对分隔符进行样式设置。

QMainWindow中使用QDockWidget时产生的分隔符是使用::separator子控件来进行样式设置的。

参考自定义QMainWindow示例。

QMenu

支持盒状模型

单个的条目是使用::item子控件来进行样式设置的。除咯通常的伪状态以外,item子控件还支持:selected:default:exclusivenon-exclusive伪状态。

可选中的菜单条目的指示器是通过::indicator子控件来进行样式设置的。

分隔符是使用::separator子控件来进行样式设置的。

对于有子菜单的条目,它们的箭头标记是使用right-arrowleft-arrow来进行样式设置的。

滚动器(scroller)是使用::scroller来进行样式设置的。

分离菜单(tear-off)是使用::tearoff来进行样式设置的。

参考自定义QMenu示例。

QMenuBar

支持盒状模型spacing属性指明菜单条目之间的空隙大小。单个的条目是使用::item子控件来进行样式设置的。

警告:在Qt/Mac 平台上,菜单条通常是嵌入系统的全局菜单条中的。在这种情况下,样式单无效。

参考自定义QMenuBar示例。

QMessageBox

messagebox-text-interaction-flags属性可用来改变消息框中的文字的交互模式。

QProgressBar

支持盒状模型。进度条的进度块(chunks)可使用::chunk子控件来进行样式设置。进度块显示在部件的内容区域中。

如果进度条显示文字,那么就使用text-align属性来设置文字的位置。

不确定的(Indeterminate)进度条会有:indeterminate伪状态。

参考自定义QProgressBar示例。

QPushButton

支持盒状模型。支持:default:flat:checked伪状态。

对于包含有一個菜单的QPushButton,其菜单指示器是使用::menu-indicator子控件来进行样式设置的。可选中的按钮的外观可使用  pen:closed伪状态来进行样式设置。

警告:如果妳只为QPushButton设置一个背景色(background-color)的话,那個背景可能不会显示出来,除非妳将边框(border)属性设置成某個值。勒是∵,在默认情况下,QPushButton会绘制一個原始的(native)边框,它會完全覆盖(overlaps)背景色。例如,

QPushButton { background-color: red; border: none; }

参考自定义QPushButton示例。

QRadioButton

支持盒状模型。选中指示器可使用::indicator子控件来进行样式设置。默认情况下,指示器被放置在部件的内容区域的左上角。

spacing属性指明选中指示器与文字之间的空隙大小。

参考自定义QRadioButton示例。

QScrollBar

支持盒状模型。目前认为滑块在其中滑动的那个槽(groove)就是这个部件的内容区域。QScrollBar的广度(extent)(也就是说,宽度或高度,取决于方向)是使用widthheight属性来设置的。要确定方向的话,就使用:horizontal:vertical伪状态。

滑块可使用::handle子控件来进行样式设置。设置min-widthmin-height可按照方向来对滑块提供尺寸的限制。

(以下部分的原文写得很糟糕,本座按照理解修改咯某些语意,有不清楚的地方最好自行试验)

::add-line子控件可用来对那个增加一行的按钮进行样式设置。默认情况下,加一行(add-line)子控件被放置在部件的边框(Border)区域的右下角(原文意思是右上角)。取决于部件的方向,其中的箭头(前面这个主语从句,原文没有)可能是::right-arrow::down-arrow。默认情况下,箭头会被放置在加一行子控件的内容区域的中心。

::sub-line子控件可用来对那个减少一行的按钮进行样式设置。默认情况下,减一行(sub-line)子控件被放置在部件的边框区域的左上角(原文是右下角)。取决于部件的方向,其中的箭头(前面这个主语从句,原文没有)可能是::left-arrow::up-arrow。默认情况下,箭头会被放置在减一行子控件的内容区域的中心。

::sub-page子控件可用来对那个可起到减一页作用的滑块区域进行样式设置。::add-page子控件可用来对那个可起到加一页作用的滑块区域进行样式设置。

参考自定义QScrollBar示例。

QSizeGrip

支持widthheightimage属性。

参考自定义QSizeGrip示例。

QSlider

支持盒状模型。对于水平滑动器,必须提供min-widthheight属性。对于竖直滑动器,必须提供min-heightwidth属性。

滑动器的滑槽是使用::groove来进行样式设置的。默认情况下,滑槽被放置在部件的内容区域中。滑动器的滑块(thumb)是使用::handle子控件来进行样式设置的。这个子控件就在滑槽的内容区域中移动。

参考自定义QSlider示例。

QSpinBox

旋转框(spin box)的框架(frame)可使用盒状模型来进行样式设置。

向上按钮和箭头可使用::up-button::up-arrow子控件来进行样式设置。默认情况下,向上按钮被放置在部件的填充区域的右上角。如果没有设置显式的尺寸,那么,它會占据它的参考(reference)区域的一半高度。向上箭头被放置在向上按钮的内容区域的中心。

向下按钮和箭头可使用::down-button::down-arrow子控件来进行样式设置。默认情况下,向下按钮被放置在部件的填充区域的右下角。如果没有设置显式的尺寸,那么,它會占据它的参考(reference)区域的一半高度。向下箭头被放置在向下按钮的内容区域的中心。

参考自定义QSpinBox示例。

QSplitter

支持盒状模型。分割器(splitter)的手柄是使用::handle子控件进行样式设置的。

参考自定义QSplitter示例。

QStatusBar

只支持background属性。单个条目的框架可使用::item子控件来进行样式设置。

参考自定义QStatusBar示例。

QTabBar

单个标签(tabs)可使用::tab子控件来进行样式设置。关闭按钮可使用::close-button子控件进行样式设置。标签支持  nly-one:first:last:middle:previous–selected:next-selected:selected伪状态。

取决于标签组的方向,會有:top:left:right:bottom伪状态。

处于选中状态的重叠的标签是通过使用负数的边距(margins)或使用absolute(绝对)位置模式来创建的。

QTabBar的分离(tear)指示器是使用::tear子控件来进行样式设置的。

QTabBar用两个QToolButtons 来表示它的滚动器,它们可使用QTabBar QToolButton选择器来进行样式设置。使用::scroller子控件来指定滚动按钮的宽度。

QTabBar中的标签的对齐方式是使用alignment属性来进行设置的。

警告:要改变QTabWidget中的QTabBar的位置,就使用tab-bar子控件(并且设置子控件位置(subcontrol-position))。

参考自定义QTabBar示例。

QTabWidget

标签部件的框架是使用::pane子控件来进行样式设置的。左边角和右边角分别是使用::left-corner::right-corner来进行样式设置的。标签条的位置是使用::tab-bar子控件来控制的。

默认情况下,QTabWidget的子控件的位置是按照QWindowsStyle风格来确定的。要想将QTabBar放置在中央的位置,就设置tab-bar 子控件的subcontrol-position。

取决于标签组的方向,會有:top:left:right:bottom伪状态。

参考自定义QTabWidget示例。

QTableView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

QTableView中的边角(corner)部件是一個QAbstractButton,可使用”QTableViewQTableCornerButton::section”选择器来进行样式设置。

警告:如果妳只为QTableCornerButton 设置背景色的话,背景可能不会显示出来,除非妳将边框属性设置成某個值。这是∵,默认情况下,QTableCornerButton會绘制一個原始的边框,它會完全挡住背景色。

网格(grid)的颜色可使用gridline-color属性来进行设置。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

参考自定义QTableView示例。

QTableWidget

参考QTableView

QTextEdit

支持盒状模型

选中的文字的颜色和背景色可分别使用selection-colorselection-background-color来进行样式设置。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

QTimeEdit

参考QSpinBox

QToolBar

支持盒状模型

取决于工具条所在的区域(停靠方向),可能會存在:top:left:right:bottom伪状态。

:first:last:middle  nly-one伪状态能够指示这個工具条在一個线性(line)组(group)(参考QStyleOptionToolBar::positionWithinLine)中的位置。

QToolBar的分隔符是使用::separator子控件来进行样式设置的。

手柄(handle)(用来移动工具条)是使用::handle子控件来进行样式设置的。

参考自定义QToolBar示例。

QToolButton

支持盒状模型

如果这個QToolButton拥有一個菜单的话,那么::menu-indicator子控件可用来对菜单指示器进行样式设置。默认情况下,菜单指示器(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子控件来进行样式设置。标签支持  nly-one:first:last:middle:previous-selected:next-selected:selected伪状态。

QToolTip

支持盒状模型opacity属性控制工具提示(tooltip)的透明度。

参考自定义QFrame示例(QToolTipQFrame)。

QTreeView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

选择行为是由show-decoration-selected属性来进行控制的。

树型视图的分支(branches)可使用::branch子控件来进行样式设置。::branch子控件支持 pen:closed:has-sibling:has-children伪状态。

使用::item子控件来对QTreeView中的条目进行更精细的控制。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

参考自定义QTreeView示例以了解如何对分支进行样式设置。

QTreeWidget

参考QTreeView

QWidget

只支持backgroundbackground-clipbackground-origin属性。

如果妳从QWidget继承一個子类,那么妳需要为妳的自定义QWidget提供以下的一個绘制事件(paintEvent):

void CustomWidget::paintEvent(QPaintEvent *)

{

QStyleOption opt;

opt.init(this);

QPainter p(this);

style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

}

如果没有设置样式单的话,以上的代码不起任何作用(no-operation)。

警告:确保为妳的自定义部件(widget)定义咯Q_OBJECT宏。

属性列表

阅读更多

没有更多推荐了,返回首页