QStyleOption Class Reference

[QtGui module]

该QStyleOption类存储所使用的参数QStyle功能。More…

通过继承QStyleOptionButtonQStyleOptionComplexQStyleOptionDockWidgetQStyleOptionFocusRectQStyleOptionFrameQStyleOptionGraphicsItemQStyleOptionHeaderQStyleOptionMenuItemQStyleOptionProgressBarQStyleOptionRubberBandQStyleOptionTabQStyleOptionTabBarBaseQStyleOptionTabWidgetFrameQStyleOptionToolBarQStyleOptionToolBoxQStyleOptionViewItem

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对于类型如QStringQPaletteQColor确保没有内存分配不必要的发生。

下面的代码片段显示了如何使用特定QStyleOption子类来绘制一个按钮:

  1. void MyPushButton.paintEvent([QPaintEvent](qpaintevent.html) *)
  2. {
  3. [QStyleOptionButton]($docs-qstyleoptionbutton.html) option;
  4. option.initFrom(this);
  5. option.state = isDown() ? [QStyle]($docs-qstyle.html).State_Sunken : [QStyle]($docs-qstyle.html).State_Raised;
  6. if (isDefault())
  7. option.features |= [QStyleOptionButton]($docs-qstyleoptionbutton.html).DefaultButton;
  8. option.text = text();
  9. option.icon = icon();
  10. [QPainter](qpainter.html) painter(this);
  11. style()->drawControl([QStyle]($docs-qstyle.html).CE_PushButton, &option, &painter, this);
  12. }

在我们的例子中,控制是一个QStyle.CE_PushButton,并根据该QStyle.drawControl( )文档对应的类是QStyleOptionButton

当重新实现QStyle它接受一个QStyleOption参数功能,你经常需要转换QStyleOption到一个子类。为安全起见,你可以使用qstyleoption_cast( ),以确保该指针的类型是正确的。例如:

  1. void MyStyle.drawPrimitive(PrimitiveElement element,
  2. const QStyleOption *option,
  3. [QPainter](qpainter.html) *painter,
  4. const [QWidget](qwidget.html) *widget)
  5. {
  6. if (element == PE_FrameFocusRect) {
  7. const [QStyleOptionFocusRect]($docs-qstyleoptionfocusrect.html) *focusRectOption =
  8. qstyleoption_cast<const [QStyleOptionFocusRect]($docs-qstyleoptionfocusrect.html) *>(option);
  9. if (focusRectOption) {
  10. // ...
  11. }
  12. }
  13. // ...
  14. }

qstyleoption_cast()函数将返回0,如果该对象,其中option点是正确的类型。

举一个例子展示风格选择如何使用,请参阅Styles例子。


Type Documentation

  1. 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

  1. QStyleOption.StyleOptionType

此枚举是用来保存有关样式选项的类型信息,并定义每个QStyleOption子类。

Constant Value Description
QStyleOption.Type SO_Default 风格选择该类型提供(SO_Default这个类) 。

该类型在内部使用QStyleOption,它的子类,并qstyleoption_cast()来确定的样式选项的类型。一般来说,你不需要担心这个,除非你想创建自己的QStyleOption子类和你自己的风格。

See also StyleOptionVersion

  1. QStyleOption.StyleOptionVersion

此枚举是用来保存有关样式选项的版本信息,并定义每个QStyleOption子类。

Constant Value Description
QStyleOption.Version 1 1

的版本是由QStyleOption子类实现不破坏兼容性扩展。如果你使用qstyleoption_cast( ) ,你通常并不需要检查它。

See also StyleOptionType


Method Documentation

  1. QStyleOption.__init__ (self, int version = QStyleOption.Version, int type = QStyleOption.SO_Default)

构造一个QStyleOption用指定的versiontype

该版本具有没有特殊含义QStyleOption它可以用于由子类不同版本的相同选项类型之间进行区分。

state成员变量被初始化为QStyle.State_None

See also versiontype

  1. QStyleOption.__init__ (self, QStyleOption other)

构造的副本other

  1. QStyleOption.init (self, QWidget w)
  1. QStyleOption.initFrom (self, QWidget w)

初始化statedirectionrectpalettefontMetrics基于所指定的成员变量widget

这是一个方便的功能,成员变量也可以手动初始化。

这个函数是Qt 4.1中引入。

See also QWidget.layoutDirection( )QWidget.rect( )QWidget.palette()和QWidget.fontMetrics( ) 。


Member Documentation

  1. Qt.LayoutDirection direction

[

这个变量保存绘制控件中的文本时,应该使用文本布局方向。

]($docs-qt.html#LayoutDirection-enum)

默认情况下,布局方向Qt.LeftToRight

See also initFrom( ) 。

  1. QFontMetrics fontMetrics

[

这个变量保存绘制控件中的文本时,应使用的字体度量。

默认情况下,应用程序的默认字体。

]($docs-qfontmetrics.html)

See also initFrom( ) 。

  1. QPalette palette

[

这个变量保存绘画的控制时,应使用的调色板。

默认情况下,应用程序的默认调色板使用。

]($docs-qpalette.html)

See also initFrom( ) 。

  1. QRect rect

[

这个变量保存了应被用于各种计算和画的面积。

]($docs-qrect.html)

这可以有不同类型的元素不同的含义。例如,对于一QStyle.CE_PushButton元件便对整个按钮的矩形区域,而对于一个QStyle.CE_PushButtonLabel元素它也不过为按钮标籤的区域。

默认值是空的矩形,即用宽度和高度设置为0的矩形。

See also initFrom( ) 。

  1. QStyle.State state

[

这个变量保存所绘制控件时使用的风格标志。

]($docs-index.htm)

缺省值是QStyle.State_None

See also initFrom( )QStyle.drawPrimitive( )QStyle.drawControl( )QStyle.drawComplexControl()和QStyle.State

  1. int type
  1. int version

这个变量保存样式选项的版本。

这个值可以由子类用于实现扩展不会破坏兼容性。如果使用qstyleoption_cast( )函数,你通常并不需要检查它。

默认值是1。