QStyleOption Class Reference
[QtGui module]
该QStyleOption类存储所使用的参数QStyle功能。More…
通过继承QStyleOptionButton,QStyleOptionComplex,QStyleOptionDockWidget,QStyleOptionFocusRect,QStyleOptionFrame,QStyleOptionGraphicsItem,QStyleOptionHeader,QStyleOptionMenuItem,QStyleOptionProgressBar,QStyleOptionRubberBand,QStyleOptionTab,QStyleOptionTabBarBase,QStyleOptionTabWidgetFrame,QStyleOptionToolBar,QStyleOptionToolBox和QStyleOptionViewItem。
Types
enum OptionType { SO_Default, SO_FocusRect, SO_Button, SO_Tab, ..., SO_CustomBase }
enum StyleOptionType { Type }
enum StyleOptionVersion { Version }
Methods
__init__ (self, int version = QStyleOption.Version, int type = QStyleOption.SO_Default)
__init__ (self, QStyleOption other)
init (self, QWidget w)
initFrom (self, QWidget w)
Members
Qt.LayoutDirection **[direction]($docs-qstyleoption.html#direction-var)**
QFontMetrics **[fontMetrics]($docs-qstyleoption.html#fontMetrics-var)**
QPalette **[palette]($docs-qstyleoption.html#palette-var)**
QRect **[rect]($docs-qstyleoption.html#rect-var)**
QStyle.State **[state]($docs-qstyleoption.html#state-var)**
int **[type]($docs-qstyleoption.html#type-var)**
int **[version]($docs-qstyleoption.html#version-var)**
Detailed Description
该QStyleOption类存储所使用的参数QStyle功能。
QStyleOption及其子类包含的所有信息,QStyle功能需要绘制的图形元素。
出于性能方面的原因,也有一些成员函数和访问成员变量是直接的(即使用.
or ->
操作符)。这种低层次的感觉,使结构简单的使用,并强调这些只是所用的样式函数的参数。
的调用者QStyle功能通常在栈上创建QStyleOption对象。这种结合Qt的广泛使用implicit sharing对于类型如QString,QPalette和QColor确保没有内存分配不必要的发生。
下面的代码片段显示了如何使用特定QStyleOption子类来绘制一个按钮:
void MyPushButton.paintEvent([QPaintEvent](qpaintevent.html) *)
{
[QStyleOptionButton]($docs-qstyleoptionbutton.html) option;
option.initFrom(this);
option.state = isDown() ? [QStyle]($docs-qstyle.html).State_Sunken : [QStyle]($docs-qstyle.html).State_Raised;
if (isDefault())
option.features |= [QStyleOptionButton]($docs-qstyleoptionbutton.html).DefaultButton;
option.text = text();
option.icon = icon();
[QPainter](qpainter.html) painter(this);
style()->drawControl([QStyle]($docs-qstyle.html).CE_PushButton, &option, &painter, this);
}
在我们的例子中,控制是一个QStyle.CE_PushButton,并根据该QStyle.drawControl( )文档对应的类是QStyleOptionButton。
当重新实现QStyle它接受一个QStyleOption参数功能,你经常需要转换QStyleOption到一个子类。为安全起见,你可以使用qstyleoption_cast( ),以确保该指针的类型是正确的。例如:
void MyStyle.drawPrimitive(PrimitiveElement element,
const QStyleOption *option,
[QPainter](qpainter.html) *painter,
const [QWidget](qwidget.html) *widget)
{
if (element == PE_FrameFocusRect) {
const [QStyleOptionFocusRect]($docs-qstyleoptionfocusrect.html) *focusRectOption =
qstyleoption_cast<const [QStyleOptionFocusRect]($docs-qstyleoptionfocusrect.html) *>(option);
if (focusRectOption) {
// ...
}
}
// ...
}
该qstyleoption_cast()函数将返回0,如果该对象,其中option
点是正确的类型。
举一个例子展示风格选择如何使用,请参阅Styles例子。
Type Documentation
QStyleOption.OptionType
此枚举在内部使用QStyleOption,它的子类,并qstyleoption_cast()来确定的样式选项的类型。一般来说,你不需要担心这个,除非你想创建自己的QStyleOption子类和你自己的风格。
Constant | Value | Description |
---|---|---|
QStyleOption.SO_Button |
2 |
QStyleOptionButton |
QStyleOption.SO_ComboBox |
? | QStyleOptionComboBox |
QStyleOption.SO_Complex |
0xf0000 |
QStyleOptionComplex |
QStyleOption.SO_Default |
0 |
QStyleOption |
QStyleOption.SO_DockWidget |
10 |
QStyleOptionDockWidget |
QStyleOption.SO_FocusRect |
1 |
QStyleOptionFocusRect |
QStyleOption.SO_Frame |
5 |
QStyleOptionFrame QStyleOptionFrameV2 |
QStyleOption.SO_GraphicsItem |
17 |
QStyleOptionGraphicsItem |
QStyleOption.SO_GroupBox |
? | QStyleOptionGroupBox |
QStyleOption.SO_Header |
8 |
QStyleOptionHeader |
QStyleOption.SO_MenuItem |
4 |
QStyleOptionMenuItem |
QStyleOption.SO_ProgressBar |
6 |
QStyleOptionProgressBar QStyleOptionProgressBarV2 |
QStyleOption.SO_RubberBand |
15 |
QStyleOptionRubberBand |
QStyleOption.SO_SizeGrip |
? | QStyleOptionSizeGrip |
QStyleOption.SO_Slider |
? | QStyleOptionSlider |
QStyleOption.SO_SpinBox |
? | QStyleOptionSpinBox |
QStyleOption.SO_Tab |
3 |
QStyleOptionTab |
QStyleOption.SO_TabBarBase |
14 |
QStyleOptionTabBarBase |
QStyleOption.SO_TabWidgetFrame |
13 |
QStyleOptionTabWidgetFrame |
QStyleOption.SO_TitleBar |
? | QStyleOptionTitleBar |
QStyleOption.SO_ToolBar |
16 |
QStyleOptionToolBar |
QStyleOption.SO_ToolBox |
7 |
QStyleOptionToolBox |
QStyleOption.SO_ToolButton |
? | QStyleOptionToolButton |
QStyleOption.SO_ViewItem |
12 |
QStyleOptionViewItem(在采访中使用) |
下面的值用于自定义控件:
Constant | Value | Description |
---|---|---|
QStyleOption.SO_CustomBase |
0xf00 |
保留自定义QStyleOptions ;所有自定义的控件的值必须高于这个值 |
QStyleOption.SO_ComplexCustomBase |
0xf000000 |
保留自定义QStyleOptions ;所有自定义复杂的控件的值必须高于这个值 |
一些样式选项用于各种Qt3Support控制:
Constant | Value | Description |
---|---|---|
QStyleOption.SO_Q3DockWindow |
9 |
QStyleOptionQ3DockWindow |
QStyleOption.SO_Q3ListView |
? | QStyleOptionQ3ListView |
QStyleOption.SO_Q3ListViewItem |
11 |
QStyleOptionQ3ListViewItem |
See also type。
QStyleOption.StyleOptionType
此枚举是用来保存有关样式选项的类型信息,并定义每个QStyleOption子类。
Constant | Value | Description |
---|---|---|
QStyleOption.Type |
SO_Default |
风格选择该类型提供(SO_Default这个类) 。 |
该类型在内部使用QStyleOption,它的子类,并qstyleoption_cast()来确定的样式选项的类型。一般来说,你不需要担心这个,除非你想创建自己的QStyleOption子类和你自己的风格。
See also StyleOptionVersion。
QStyleOption.StyleOptionVersion
此枚举是用来保存有关样式选项的版本信息,并定义每个QStyleOption子类。
Constant | Value | Description |
---|---|---|
QStyleOption.Version |
1 |
1 |
的版本是由QStyleOption子类实现不破坏兼容性扩展。如果你使用qstyleoption_cast( ) ,你通常并不需要检查它。
See also StyleOptionType。
Method Documentation
QStyleOption.__init__ (self, int version = QStyleOption.Version, int type = QStyleOption.SO_Default)
构造一个QStyleOption用指定的version和type。
该版本具有没有特殊含义QStyleOption它可以用于由子类不同版本的相同选项类型之间进行区分。
该state成员变量被初始化为QStyle.State_None。
QStyleOption.__init__ (self, QStyleOption other)
构造的副本other。
QStyleOption.init (self, QWidget w)
QStyleOption.initFrom (self, QWidget w)
初始化state,direction,rect,palette和fontMetrics基于所指定的成员变量widget。
这是一个方便的功能,成员变量也可以手动初始化。
这个函数是Qt 4.1中引入。
See also QWidget.layoutDirection( )QWidget.rect( )QWidget.palette()和QWidget.fontMetrics( ) 。
Member Documentation
Qt.LayoutDirection direction
[
这个变量保存绘制控件中的文本时,应该使用文本布局方向。
]($docs-qt.html#LayoutDirection-enum)
See also initFrom( ) 。
QFontMetrics fontMetrics
[
这个变量保存绘制控件中的文本时,应使用的字体度量。
默认情况下,应用程序的默认字体。
]($docs-qfontmetrics.html)
QPalette palette
[
这个变量保存绘画的控制时,应使用的调色板。
默认情况下,应用程序的默认调色板使用。
]($docs-qpalette.html)
QRect rect
[
这个变量保存了应被用于各种计算和画的面积。
]($docs-qrect.html)
这可以有不同类型的元素不同的含义。例如,对于一QStyle.CE_PushButton元件便对整个按钮的矩形区域,而对于一个QStyle.CE_PushButtonLabel元素它也不过为按钮标籤的区域。
默认值是空的矩形,即用宽度和高度设置为0的矩形。
See also initFrom( ) 。
QStyle.State state
[
这个变量保存所绘制控件时使用的风格标志。
]($docs-index.htm)
See also initFrom( )QStyle.drawPrimitive( )QStyle.drawControl( )QStyle.drawComplexControl()和QStyle.State。
int type
int version
这个变量保存样式选项的版本。
这个值可以由子类用于实现扩展不会破坏兼容性。如果使用qstyleoption_cast( )函数,你通常并不需要检查它。
默认值是1。