QGraphicsWidget 类

QGraphicsWidget 类是基类用于所有 Widget 项在 QGraphicsScene . 更多...

头: #include <QGraphicsWidget>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QGraphicsObject and QGraphicsLayoutItem
继承者: QGraphicsProxyWidget

公共类型

enum anonymous { Type }

特性

公共函数

  QGraphicsWidget (QGraphicsItem * parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())
virtual ~QGraphicsWidget ()
QList<QAction *> actions () const
void addAction (QAction * action )
void addActions (const QList<QAction *> & actions )
void adjustSize ()
bool autoFillBackground () const
Qt::FocusPolicy focusPolicy () const
QGraphicsWidget * focusWidget () const
QFont font () const
void getWindowFrameMargins (qreal * left , qreal * top , qreal * right , qreal * bottom ) const
int grabShortcut (const QKeySequence & sequence , Qt::ShortcutContext context = Qt::WindowShortcut)
void insertAction (QAction * before , QAction * action )
void insertActions (QAction * before , const QList<QAction *> & actions )
bool isActiveWindow () const
QGraphicsLayout * layout () const
Qt::LayoutDirection layoutDirection () const
virtual void paintWindowFrame (QPainter * painter , const QStyleOptionGraphicsItem * option , QWidget * widget = nullptr)
QPalette palette () const
QRectF rect () const
void releaseShortcut (int id )
void removeAction (QAction * action )
void resize (const QSizeF & size )
void resize (qreal w , qreal h )
void setAttribute (Qt::WidgetAttribute 属性 , bool on = true)
void setAutoFillBackground (bool enabled )
void setContentsMargins (QMarginsF margins )
void setContentsMargins (qreal left , qreal top , qreal right , qreal bottom )
void setFocusPolicy (Qt::FocusPolicy policy )
void setFont (const QFont & font )
void setGeometry (qreal x , qreal y , qreal w , qreal h )
void setLayout (QGraphicsLayout * layout )
void setLayoutDirection (Qt::LayoutDirection direction )
void setPalette (const QPalette & palette )
void setShortcutAutoRepeat (int id , bool enabled = true)
void setShortcutEnabled (int id , bool enabled = true)
void setStyle (QStyle * style )
void setWindowFlags (Qt::WindowFlags wFlags )
void setWindowFrameMargins (QMarginsF margins )
void setWindowFrameMargins (qreal left , qreal top , qreal right , qreal bottom )
void setWindowTitle (const QString & title )
QSizeF size () const
QStyle * style () const
bool testAttribute (Qt::WidgetAttribute 属性 ) const
void unsetLayoutDirection ()
void unsetWindowFrameMargins ()
Qt::WindowFlags windowFlags () const
QRectF windowFrameGeometry () const
QRectF windowFrameRect () const
QString windowTitle () const
Qt::WindowType windowType () const

重实现公共函数

virtual QRectF boundingRect () const override
virtual void getContentsMargins (qreal * left , qreal * top , qreal * right , qreal * bottom ) const override
virtual void paint (QPainter * painter , const QStyleOptionGraphicsItem * option , QWidget * widget = nullptr) override
virtual void setGeometry (const QRectF & rect ) override
virtual QPainterPath shape () const override
virtual int type () const override

公共槽

bool close ()

信号

void geometryChanged ()
void layoutChanged ()

静态公共成员

void setTabOrder (QGraphicsWidget * first , QGraphicsWidget * second )

保护函数

virtual void changeEvent (QEvent * event )
virtual void closeEvent (QCloseEvent * event )
virtual bool focusNextPrevChild (bool next )
virtual void grabKeyboardEvent (QEvent * event )
virtual void grabMouseEvent (QEvent * event )
virtual void hideEvent (QHideEvent * event )
virtual void initStyleOption (QStyleOption * option ) const
virtual void moveEvent (QGraphicsSceneMoveEvent * event )
virtual void polishEvent ()
virtual void resizeEvent (QGraphicsSceneResizeEvent * event )
virtual void showEvent (QShowEvent * event )
virtual void ungrabKeyboardEvent (QEvent * event )
virtual void ungrabMouseEvent (QEvent * event )
virtual bool windowFrameEvent (QEvent * event )
virtual Qt::WindowFrameSection windowFrameSectionAt (const QPointF & pos ) const

重实现保护函数

virtual bool event (QEvent * event ) override
virtual void focusInEvent (QFocusEvent * event ) override
virtual void focusOutEvent (QFocusEvent * event ) override
virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent * event ) override
virtual void hoverMoveEvent (QGraphicsSceneHoverEvent * event ) override
virtual QVariant itemChange (QGraphicsItem::GraphicsItemChange change , const QVariant & value ) override
virtual bool sceneEvent (QEvent * event ) override
virtual QSizeF sizeHint (Qt::SizeHint which , const QSizeF & constraint = QSizeF()) const override
virtual void updateGeometry () override

详细描述

QGraphicsWidget 是扩展基项,提供的额外功能超过 QGraphicsItem 。类似于 QWidget 在很多方面:

不像 QGraphicsItem ,QGraphicsWidget 不是抽象类;可以创建 QGraphicsWidget 实例,不必子类化它。此方式对仅将子级 Widget 组织到布局的服务目的小部件很有用。

QGraphicsWidget 可以用作自己的自定义项的基项,若要求处理高级输入聚焦,如:Tab 聚焦和激活,或布局。

由于 QGraphicsWidget 类似于 QWidget 且拥有同样的 API,更容易于移植 Widget 从 QWidget 到 QGraphicsWidget,而不是 QGraphicsItem .

注意: QWidget 基 Widget 可以直接嵌入 QGraphicsScene 使用 QGraphicsProxyWidget .

明显差异在 QGraphicsWidget 和 QWidget 是:

QGraphicsWidget QWidget
坐标和几何体按 qreal 定义 (双精度或浮点数,从属平台)。 QWidget 使用整数几何体 ( QPoint , QRect ).
小部件默认情况下已可见;不必调用 show () 来显示 Widget。 QWidget 默认情况下是隐藏的,直到调用 show ().
支持 Widget 属性子集。 支持所有 Widget 属性。
顶层项的样式默认为 QGraphicsScene::style 顶层 Widget 的样式默认为 QApplication::style
Graphics View 提供自定义拖放框架,不同于 QWidget . 标准拖放框架。
Widget 项不支持模态。 完整模态支持。

QGraphicsWidget 支持 Qt 小部件属性子集 ( Qt::WidgetAttribute ),如下表所示。此表中未列出的任何属性,不受支持或不使用。

Widget 属性 用法
Qt::WA_SetLayoutDirection 设置通过 setLayoutDirection (), cleared by unsetLayoutDirection (). You can test this attribute to check if the widget has been explicitly assigned a layoutDirection . If the attribute is not set, the layoutDirection() is inherited.
Qt::WA_RightToLeft Toggled by setLayoutDirection (). Inherited from the parent/scene. If set, the widget's layout will order horizontally arranged widgets from right to left.
Qt::WA_SetStyle Set and cleared by setStyle (). If this attribute is set, the widget has been explicitly assigned a style. If it is unset, the widget will use the scene's or the application's style.
Qt::WA_Resized 设置通过 setGeometry () 和 resize ().
Qt::WA_SetPalette 设置通过 setPalette ().
Qt::WA_SetFont 设置通过 setFont ().
Qt::WA_WindowPropagation 允许传播到窗口 Widget。

尽管 QGraphicsWidget 继承自 QObject and QGraphicsItem ,应使用函数提供通过 QGraphicsItem , not QObject ,来管理父级和子级项之间的关系。这些函数控制项的堆叠次序及它们的所有权。

注意: QObject::parent () 应始终返回 nullptr 对于 QGraphicsWidgets,但此策略未严格定义。

另请参阅 QGraphicsProxyWidget , QGraphicsItem ,和 Widget 和布局 .

成员类型文档编制

enum QGraphicsWidget:: anonymous

值的返回通过虚拟 type () 函数。

常量 描述
QGraphicsWidget::Type 11 图形 Widget 项

特性文档编制

autoFillBackground : bool

此特性保持是否自动填充 Widget 背景

If enabled, this property will cause Qt to fill the background of the widget before invoking the paint () method. The color used is defined by the QPalette::Window 颜色角色来自 Widget 的 palette .

此外,填充窗口总是采用 QPalette::Window ,除非有设置 WA_OpaquePaintEvent (或 WA_NoSystemBackground) 属性。

默认情况下,此特性为 false .

访问函数:

bool autoFillBackground () const
void setAutoFillBackground (bool enabled )

另请参阅 Qt::WA_OpaquePaintEvent and Qt::WA_NoSystemBackground .

focusPolicy : Qt::FocusPolicy

此特性保持 Widget 接受键盘聚焦的方式

The focus policy is Qt::TabFocus 若 Widget 通过 Tab 键接受键盘聚焦, Qt::ClickFocus 若 Widget 通过点击接受聚焦, Qt::StrongFocus 若它接受两者,而 Qt::NoFocus (默认) 若它根本不接受聚焦。

必须为 Widget 启用键盘聚焦,若它处理键盘事件。通常这是由 Widget 构造函数完成的。例如, QLineEdit 构造函数调用 setFocusPolicy( Qt::StrongFocus ).

If you enable a focus policy (i.e., not Qt::NoFocus ), QGraphicsWidget will automatically enable the ItemIsFocusable flag. Setting Qt::NoFocus on a widget will clear the ItemIsFocusable flag. If the widget currently has keyboard focus, the widget will automatically lose focus.

访问函数:

Qt::FocusPolicy focusPolicy () const
void setFocusPolicy (Qt::FocusPolicy policy )

另请参阅 focusInEvent (), focusOutEvent (), keyPressEvent (), keyReleaseEvent (),和 enabled .

font : QFont

This property holds the widgets' font

This property provides the widget's font.

QFont consists of font properties that have been explicitly defined and properties implicitly inherited from the widget's parent. Hence, font() can return a different font compared to the one set with setFont(). This scheme allows you to define single entries in a font without affecting the font's inherited entries.

When a widget's font changes, it resolves its entries against its parent widget. If the widget does not have a parent widget, it resolves its entries against the scene. The widget then sends itself a FontChange event and notifies all its descendants so that they can resolve their fonts as well.

默认情况下,此特性包含应用程序默认字体。

访问函数:

QFont font () const
void setFont (const QFont & font )

另请参阅 QApplication::font (), QGraphicsScene::font ,和 QFont::resolve ().

geometry : QRectF

This property holds the geometry of the widget

Sets the item's geometry to rect . The item's position and size are modified as a result of calling this function. The item is first moved, then resized.

A side effect of calling this function is that the widget will receive a move event and a resize event. Also, if the widget has a layout assigned, the layout will activate.

访问函数:

virtual void setGeometry (const QRectF & rect ) override
void setGeometry (qreal x , qreal y , qreal w , qreal h )

通知程序信号:

void geometryChanged ()

另请参阅 geometry () 和 resize ().

layout : QGraphicsLayout *

This property holds the layout of the widget

Any existing layout manager is deleted before the new layout is assigned. If layout is nullptr , the widget is left without a layout. Existing subwidgets' geometries will remain unaffected.

QGraphicsWidget 拥有所有权对于 layout .

All widgets that are currently managed by layout or all of its sublayouts, are automatically reparented to this item. The layout is then invalidated, and the child widget geometries are adjusted according to this item's geometry () and contentsMargins(). Children who are not explicitly managed by layout remain unaffected by the layout after it has been assigned to this widget.

If no layout is currently managing this widget, layout() will return nullptr .

访问函数:

QGraphicsLayout * layout () const
void setLayout (QGraphicsLayout * layout )

通知程序信号:

void layoutChanged ()

layoutDirection : Qt::LayoutDirection

此特性保持此 Widget 的布局方向。

This property modifies this widget's and all of its descendants' Qt::WA_RightToLeft attribute. It also sets this widget's Qt::WA_SetLayoutDirection 属性。

The widget's layout direction determines the order in which the layout manager horizontally arranges subwidgets of this widget. The default value depends on the language and locale of the application, and is typically in the same direction as words are read and written. With Qt::LeftToRight , the layout starts placing subwidgets from the left side of this widget towards the right. Qt::RightToLeft does the opposite - the layout will place widgets starting from the right edge moving towards the left.

Subwidgets inherit their layout direction from the parent. Top-level widget items inherit their layout direction from QGraphicsScene::layoutDirection. If you change a widget's layout direction by calling setLayoutDirection(), the widget will send itself a LayoutDirectionChange event, and then propagate the new layout direction to all its descendants.

访问函数:

Qt::LayoutDirection layoutDirection () const
void setLayoutDirection (Qt::LayoutDirection direction )
void unsetLayoutDirection ()

另请参阅 QWidget::layoutDirection and QApplication::layoutDirection .

maximumSize : const QSizeF

This property holds the maximum size of the widget

另请参阅 setMaximumSize (), maximumSize (), minimumSize ,和 preferredSize .

minimumSize : const QSizeF

This property holds the minimum size of the widget

另请参阅 setMinimumSize (), minimumSize (), preferredSize ,和 maximumSize .

palette : QPalette

此特性保持 Widget 的调色板

This property provides the widget's palette. The palette provides colors and brushes for color groups (e.g., QPalette::Button ) and states (e.g., QPalette::Inactive ), loosely defining the general look of the widget and its children.

QPalette consists of color groups that have been explicitly defined, and groups that are implicitly inherited from the widget's parent. Because of this, palette() can return a different palette than what has been set with setPalette(). This scheme allows you to define single entries in a palette without affecting the palette's inherited entries.

When a widget's palette changes, it resolves its entries against its parent widget, or if it doesn't have a parent widget, it resolves against the scene. It then sends itself a PaletteChange event, and notifies all its descendants so they can resolve their palettes as well.

By default, this property contains the application's default palette.

访问函数:

QPalette palette () const
void setPalette (const QPalette & palette )

另请参阅 QGuiApplication::palette (), QGraphicsScene::palette ,和 QPalette::resolve ().

preferredSize : const QSizeF

This property holds the preferred size of the widget

另请参阅 setPreferredSize (), preferredSize (), minimumSize ,和 maximumSize .

size : QSizeF

This property holds the size of the widget

Calling resize() resizes the widget to a size bounded by minimumSize () 和 maximumSize (). This property only affects the widget's width and height (e.g., its right and bottom edges); the widget's position and top-left corner remains unaffected.

Resizing a widget triggers the widget to immediately receive a GraphicsSceneResize event with the widget's old and new size. If the widget has a layout assigned when this event arrives, the layout will be activated and it will automatically update any child widgets's geometry.

This property does not affect any layout of the parent widget. If the widget itself is managed by a parent layout; e.g., it has a parent widget with a layout assigned, that layout will not activate.

默认情况下,此特性包含 0 大小宽度和高度。

访问函数:

QSizeF size () const
void resize (const QSizeF & size )
void resize (qreal w , qreal h )

通知程序信号:

void geometryChanged ()

另请参阅 setGeometry (), QGraphicsSceneResizeEvent ,和 QGraphicsLayout .

sizePolicy : const QSizePolicy

This property holds the size policy for the widget

另请参阅 sizePolicy (), setSizePolicy (),和 QWidget::sizePolicy ().

windowFlags : Qt::WindowFlags

This property holds the widget's window flags

Window flags are a combination of a window type (e.g., Qt::Dialog ) and several flags giving hints on the behavior of the window. The behavior is platform-dependent.

By default, this property contains no window flags.

Windows are panels. If you set the Qt::Window flag, the ItemIsPanel flag will be set automatically. If you clear the Qt::Window flag, the ItemIsPanel flag is also cleared. Note that the ItemIsPanel flag can be set independently of Qt::Window .

访问函数:

Qt::WindowFlags windowFlags () const
void setWindowFlags (Qt::WindowFlags wFlags )

另请参阅 isWindow () 和 isPanel ().

windowTitle : QString

This property holds the window title (caption).

This property is only used for windows.

By default, if no title has been set, this property contains an empty string.

访问函数:

QString windowTitle () const
void setWindowTitle (const QString & title )

成员函数文档编制

QGraphicsWidget:: QGraphicsWidget ( QGraphicsItem * parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())

Constructs a QGraphicsWidget instance. The optional parent 自变量会被传递给 QGraphicsItem 's constructor. The optional wFlags argument specifies the widget's window flags (e.g., whether the widget should be a window, a tool, a popup, etc).

[slot] bool QGraphicsWidget:: close ()

Call this function to close the widget.

返回 true 若 Widget 被关闭;否则返回 false . This slot will first send a QCloseEvent to the widget, which may or may not accept the event. If the event was ignored, nothing happens. If the event was accepted, it will hide () the widget.

若 Widget 拥有 Qt::WA_DeleteOnClose attribute set it will be deleted.

[signal] void QGraphicsWidget:: geometryChanged ()

This signal gets emitted whenever the geometry is changed in setGeometry ().

注意: 通知程序信号对于特性 geometry 。通知程序信号对于特性 size .

[虚拟] QGraphicsWidget:: ~QGraphicsWidget ()

销毁 QGraphicsWidget 实例。

QList < QAction *> QGraphicsWidget:: actions () const

返回此 Widget 的动作列表 (可能为空)。

另请参阅 insertAction (), removeAction (), QWidget::actions (), QAction::associatedWidgets (),和 QAction::associatedGraphicsWidgets ().

void QGraphicsWidget:: addAction ( QAction * action )

追加动作 action 到此 Widget 的动作列表。

All QGraphicsWidgets have a list of QAction ,不管怎样,可以按多种不同方式图形表示它们。默认使用 QAction 列表 (作为返回通过 actions ()) 创建上下文 QMenu .

QGraphicsWidget 只应每动作有一个,且已添加动作不会导致同一动作在 Widget 中出现 2 次。

另请参阅 removeAction (), insertAction (), actions (),和 QWidget::addAction ().

void QGraphicsWidget:: addActions (const QList < QAction *> & actions )

追加动作 actions 到此 Widget 的动作列表。

另请参阅 removeAction (), QMenu , addAction (),和 QWidget::addActions ().

void QGraphicsWidget:: adjustSize ()

Adjusts the size of the widget to its effective preferred size hint.

This function is called implicitly when the item is shown for the first time.

另请参阅 effectiveSizeHint () 和 Qt::MinimumSize .

[override virtual] QRectF QGraphicsWidget:: boundingRect () const

重实现: QGraphicsItem::boundingRect () const.

[virtual protected] void QGraphicsWidget:: changeEvent ( QEvent * event )

此事件处理程序可以被重实现以处理状态改变。

The state being changed in this event can be retrieved through event .

改变事件包括: QEvent::ActivationChange , QEvent::EnabledChange , QEvent::FontChange , QEvent::StyleChange , QEvent::PaletteChange , QEvent::ParentChange , QEvent::LayoutDirectionChange ,和 QEvent::ContentsRectChange .

[virtual protected] void QGraphicsWidget:: closeEvent ( QCloseEvent * event )

此事件处理程序用于 event , can be reimplemented in a subclass to receive widget close events. The default implementation accepts the event.

另请参阅 close () 和 QCloseEvent .

[override virtual protected] bool QGraphicsWidget:: event ( QEvent * event )

重实现: QGraphicsObject::event (QEvent *ev).

处理 event . QGraphicsWidget handles the following events:

Event 用法
波兰语 Delivered to the widget some time after it has been shown.
GraphicsSceneMove Delivered to the widget after its local position has changed.
GraphicsSceneResize Delivered to the widget after its size has changed.
Show Delivered to the widget before it has been shown.
Hide Delivered to the widget after it has been hidden.
PaletteChange Delivered to the widget after its palette has changed.
FontChange Delivered to the widget after its font has changed.
EnabledChange Delivered to the widget after its enabled state has changed.
StyleChange Delivered to the widget after its style has changed.
LayoutDirectionChange Delivered to the widget after its layout direction has changed.
ContentsRectChange Delivered to the widget after its contents margins/ contents rect has changed.

[override virtual protected] void QGraphicsWidget:: focusInEvent ( QFocusEvent * event )

重实现: QGraphicsItem::focusInEvent (QFocusEvent *event).

[virtual protected] bool QGraphicsWidget:: focusNextPrevChild ( bool next )

查找新的 Widget 以赋予键盘聚焦,如适合 Tab 和 Shift+Tab,并返回 true if it can find a new widget; returns false otherwise. If next is true, this function searches forward; if next 为 False,向后搜索。

Sometimes, you will want to reimplement this function to provide special focus handling for your widget and its subwidgets. For example, a web browser might reimplement it to move its current active link forward or backward, and call the base implementation only when it reaches the last or first link on the page.

Child widgets call focusNextPrevChild() on their parent widgets, but only the window that contains the child widgets decides where to redirect focus. By reimplementing this function for an object, you gain control of focus traversal for all child widgets.

另请参阅 focusPolicy ().

[override virtual protected] void QGraphicsWidget:: focusOutEvent ( QFocusEvent * event )

重实现: QGraphicsItem::focusOutEvent (QFocusEvent *event).

QGraphicsWidget *QGraphicsWidget:: focusWidget () const

If this widget, a child or descendant of this widget currently has input focus, this function will return a pointer to that widget. If no descendant widget has input focus, nullptr 被返回。

另请参阅 QGraphicsItem::focusItem () 和 QWidget::focusWidget ().

[override virtual] void QGraphicsWidget:: getContentsMargins ( qreal * left , qreal * top , qreal * right , qreal * bottom ) const

重实现: QGraphicsLayoutItem::getContentsMargins (qreal *left, qreal *top, qreal *right, qreal *bottom) const.

Gets the widget's contents margins. The margins are stored in left , top , right and bottom , as pointers to qreals. Each argument can be omitted by passing nullptr .

另请参阅 setContentsMargins ().

void QGraphicsWidget:: getWindowFrameMargins ( qreal * left , qreal * top , qreal * right , qreal * bottom ) const

Gets the widget's window frame margins. The margins are stored in left , top , right and bottom as pointers to qreals. Each argument can be omitted by passing nullptr .

另请参阅 setWindowFrameMargins () 和 windowFrameRect ().

[virtual protected] void QGraphicsWidget:: grabKeyboardEvent ( QEvent * event )

此事件处理程序用于 event ,可以在子类中重实现以接收通知为 QEvent::GrabKeyboard 事件。

另请参阅 grabKeyboard () 和 grabMouse ().

[virtual protected] void QGraphicsWidget:: grabMouseEvent ( QEvent * event )

此事件处理程序用于 event ,可以在子类中重实现以接收通知为 QEvent::GrabMouse 事件。

另请参阅 grabMouse () 和 grabKeyboard ().

int QGraphicsWidget:: grabShortcut (const QKeySequence & sequence , Qt::ShortcutContext context = Qt::WindowShortcut)

Adds a shortcut to Qt's shortcut system that watches for the given key sequence 以给定 context 。若 context is Qt::ApplicationShortcut ,快捷方式适用于整个应用程序。否则,要么本地到此小部件 Qt::WidgetShortcut ,或到窗口自身 Qt::WindowShortcut . For widgets that are not part of a window (i.e., top-level widgets and their children), Qt::WindowShortcut shortcuts apply to the scene.

If the same key sequence has been grabbed by several widgets, when the key sequence occurs a QEvent::Shortcut 事件以不确定次序发送给应用它的所有 Widget,但将 "ambiguous (歧义)" 标志设为 true。

警告: 通常不需要使用此函数;而是创建 QAction 采用要求的快捷键序列 (若还想要等效菜单选项和工具栏按钮),或创建 QShortcut 若仅仅需要键序列。 QAction and QShortcut 会为您处理所有事件过滤,并提供当用户触发键序列时触发的信号,所以比此低级函数更易于使用。

另请参阅 releaseShortcut (), setShortcutEnabled (),和 QWidget::grabShortcut ().

[virtual protected] void QGraphicsWidget:: hideEvent ( QHideEvent * event )

此事件处理程序用于 Hide events, is delivered after the widget has been hidden, for example, setVisible(false) has been called for the widget or one of its ancestors when the widget was previously shown.

You can reimplement this event handler to detect when your widget is hidden. Calling QEvent::accept () 或 QEvent::ignore () 在 event 不起作用。

另请参阅 showEvent (), QWidget::hideEvent (),和 ItemVisibleChange .

[override virtual protected] void QGraphicsWidget:: hoverLeaveEvent ( QGraphicsSceneHoverEvent * event )

重实现: QGraphicsItem::hoverLeaveEvent (QGraphicsSceneHoverEvent *event).

[override virtual protected] void QGraphicsWidget:: hoverMoveEvent ( QGraphicsSceneHoverEvent * event )

重实现: QGraphicsItem::hoverMoveEvent (QGraphicsSceneHoverEvent *event).

[virtual protected] void QGraphicsWidget:: initStyleOption ( QStyleOption * option ) const

Populates a style option object for this widget based on its current state, and stores the output in option . The default implementation populates option with the following properties.

Style Option Property
state & QStyle::State_Enabled Corresponds to QGraphicsItem::isEnabled ().
state & QStyle::State_HasFocus Corresponds to QGraphicsItem::hasFocus ().
state & QStyle::State_MouseOver Corresponds to QGraphicsItem::isUnderMouse ().
direction Corresponds to QGraphicsWidget::layoutDirection ().
rect Corresponds to QGraphicsWidget::rect ().toRect().
palette Corresponds to QGraphicsWidget::palette ().
fontMetrics Corresponds to QFontMetrics ( QGraphicsWidget::font ()).

子类化的 QGraphicsWidget should call the base implementation, and then test the type of option 使用 qstyleoption_cast <>() or test QStyleOption::Type before storing widget-specific options.

例如:

void MyGroupBoxWidget::initStyleOption(QStyleOption *option) const
{
    QGraphicsWidget::initStyleOption(option);
    if (QStyleOptionGroupBox *box = qstyleoption_cast<QStyleOptionGroupBox *>(option)) {
        // Add group box specific state.
        box->flat = isFlat();
        ...
    }
}
					

另请参阅 QStyleOption::initFrom ().

void QGraphicsWidget:: insertAction ( QAction * before , QAction * action )

插入动作 action 到此 Widget 的动作列表,前置于动作 before 。它追加动作,若 before is nullptr or before 不是有效动作 (对于此 Widget)。

QGraphicsWidget 每动作只应有一个。

另请参阅 removeAction (), addAction (), QMenu , actions (),和 QWidget::insertActions ().

void QGraphicsWidget:: insertActions ( QAction * before , const QList < QAction *> & actions )

插入动作 actions 到此 Widget 的动作列表,前置于动作 before 。它追加动作,若 before is nullptr or before 不是有效动作 (对于此 Widget)。

QGraphicsWidget 每动作最多能有一个。

另请参阅 removeAction (), QMenu , insertAction (),和 QWidget::insertActions ().

bool QGraphicsWidget:: isActiveWindow () const

返回 true if this widget's window is in the active window, or if the widget does not have a window but is in an active scene (i.e., a scene that currently has focus).

The active window is the window that either contains a child widget that currently has input focus, or that itself has input focus.

另请参阅 QGraphicsScene::activeWindow (), QGraphicsScene::setActiveWindow (),和 isActive ().

[override virtual protected] QVariant QGraphicsWidget:: itemChange ( QGraphicsItem::GraphicsItemChange change , const QVariant & value )

重实现: QGraphicsItem::itemChange (QGraphicsItem::GraphicsItemChange change, const QVariant &value).

QGraphicsWidget uses the base implementation of this function to catch and deliver events related to state changes in the item. Because of this, it is very important that subclasses call the base implementation.

change specifies the type of change, and value is the new value.

例如, QGraphicsWidget uses ItemVisibleChange to deliver Show and Hide events, ItemPositionHasChanged to deliver Move events, and ItemParentChange both to deliver ParentChange events, and for managing the focus chain.

QGraphicsWidget enables the ItemSendsGeometryChanges flag by default in order to track position changes.

另请参阅 QGraphicsItem::itemChange ().

QGraphicsLayout *QGraphicsWidget:: layout () const

Returns this widget's layout, or nullptr if no layout is currently managing this widget.

注意: Getter function for property layout.

另请参阅 setLayout ().

[virtual protected] void QGraphicsWidget:: moveEvent ( QGraphicsSceneMoveEvent * event )

此事件处理程序用于 GraphicsSceneMove events, is delivered after the widget has moved (e.g., its local position has changed).

This event is only delivered when the item is moved locally. Calling setTransform () or moving any of the item's ancestors does not affect the item's local position.

You can reimplement this event handler to detect when your widget has moved. Calling QEvent::accept () 或 QEvent::ignore () 在 event 不起作用。

另请参阅 ItemPositionChange and ItemPositionHasChanged .

[override virtual] void QGraphicsWidget:: paint ( QPainter * painter , const QStyleOptionGraphicsItem * option , QWidget * widget = nullptr)

重实现: QGraphicsItem::paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget).

[虚拟] void QGraphicsWidget:: paintWindowFrame ( QPainter * painter , const QStyleOptionGraphicsItem * option , QWidget * widget = nullptr)

此虚函数被调用由 QGraphicsScene to draw the window frame for windows using painter , option ,和 widget , in local coordinates. The base implementation uses the current style to render the frame and title bar.

可以重实现此函数在子类 QGraphicsWidget to provide custom rendering of the widget's window frame.

另请参阅 QGraphicsItem::paint ().

[virtual protected] void QGraphicsWidget:: polishEvent ()

This event is delivered to the item by the scene at some point after it has been constructed, but before it is shown or otherwise accessed through the scene. You can use this event handler to do last-minute initializations of the widget which require the item to be fully constructed.

The base implementation does nothing.

QRectF QGraphicsWidget:: rect () const

Returns the item's local rect as a QRectF . This function is equivalent to QRectF (QPointF(), size ()).

另请参阅 setGeometry () 和 resize ().

void QGraphicsWidget:: releaseShortcut ( int id )

删除快捷方式采用给定 id 从 Qt 的快捷方式系统。Widget 将不再接收 QEvent::Shortcut 事件对于快捷方式键序列 (除非它有具有相同键序列的其它快捷方式)。

警告: 通常应该不需要使用此函数,因为 Qt 的快捷方式系统会自动移除快捷方式,当它们的父级 Widget 被销毁时。最好使用 QAction or QShortcut 处理快捷方式,因为它们比此低级函数更易于使用。另请注意,此操作很昂贵。

另请参阅 grabShortcut (), setShortcutEnabled (),和 QWidget::releaseShortcut ().

void QGraphicsWidget:: removeAction ( QAction * action )

移除动作 action 从此 Widget 的动作列表。

另请参阅 insertAction (), actions (), insertAction (),和 QWidget::removeAction ().

void QGraphicsWidget:: resize ( qreal w , qreal h )

这是重载函数。

Constructs a resize with the given width ( w ) 和 height ( h ). This convenience function is equivalent to calling resize( QSizeF (w, h)).

注意: setter 函数对于特性 size .

另请参阅 setGeometry () 和 setTransform ().

[virtual protected] void QGraphicsWidget:: resizeEvent ( QGraphicsSceneResizeEvent * event )

此事件处理程序用于 GraphicsSceneResize events, is delivered after the widget has been resized (i.e., its local size has changed). event contains both the old and the new size.

This event is only delivered when the widget is resized locally; calling setTransform () on the widget or any of its ancestors or view, does not affect the widget's local size.

You can reimplement this event handler to detect when your widget has been resized. Calling QEvent::accept () 或 QEvent::ignore () 在 event 不起作用。

另请参阅 geometry () 和 setGeometry ().

[override virtual protected] bool QGraphicsWidget:: sceneEvent ( QEvent * event )

重实现: QGraphicsItem::sceneEvent (QEvent *event).

QGraphicsWidget 's implementation of sceneEvent() simply passes event to QGraphicsWidget::event (). You can handle all events for your widget in event () or in any of the convenience functions; you should not have to reimplement this function in a subclass of QGraphicsWidget .

返回 true if event 已被识别并处理;否则,返回 false .

另请参阅 QGraphicsItem::sceneEvent ().

void QGraphicsWidget:: setAttribute ( Qt::WidgetAttribute 属性 , bool on = true)

on is true, this function enables 属性 ;否则 属性 被禁用。

See the class documentation for QGraphicsWidget for a complete list of which attributes are supported, and what they are for.

另请参阅 testAttribute () 和 QWidget::setAttribute ().

[since 5.14] void QGraphicsWidget:: setContentsMargins ( QMarginsF margins )

Sets the widget's contents margins to margins .

Contents margins are used by the assigned layout to define the placement of subwidgets and layouts. Margins are particularly useful for widgets that constrain subwidgets to only a section of its own geometry. For example, a group box with a layout will place subwidgets inside its frame, but below the title.

Changing a widget's contents margins will always trigger an update (), and any assigned layout will be activated automatically. The widget will then receive a ContentsRectChange 事件。

该函数在 Qt 5.14 引入。

另请参阅 getContentsMargins () 和 setGeometry ().

void QGraphicsWidget:: setContentsMargins ( qreal left , qreal top , qreal right , qreal bottom )

这是重载函数。

Sets the widget's contents margins to left , top , right and bottom .

void QGraphicsWidget:: setGeometry ( qreal x , qreal y , qreal w , qreal h )

This convenience function is equivalent to calling setGeometry( QRectF ( x , y , w , h )).

注意: setter 函数对于特性 geometry .

另请参阅 geometry () 和 resize ().

void QGraphicsWidget:: setLayout ( QGraphicsLayout * layout )

Sets the layout for this widget to layout . Any existing layout manager is deleted before the new layout is assigned. If layout is nullptr , the widget is left without a layout. Existing subwidgets' geometries will remain unaffected.

All widgets that are currently managed by layout or all of its sublayouts, are automatically reparented to this item. The layout is then invalidated, and the child widget geometries are adjusted according to this item's geometry () and contentsMargins(). Children who are not explicitly managed by layout remain unaffected by the layout after it has been assigned to this widget.

QGraphicsWidget 拥有所有权对于 layout .

注意: setter 函数对于特性 layout .

另请参阅 layout (), QGraphicsLinearLayout::addItem (),和 QGraphicsLayout::invalidate ().

void QGraphicsWidget:: setShortcutAutoRepeat ( int id , bool enabled = true)

enabled 为 true,快捷方式的自动重复采用给定 id 被启用;否则被禁用。

另请参阅 grabShortcut (), releaseShortcut (),和 QWidget::setShortcutAutoRepeat ().

void QGraphicsWidget:: setShortcutEnabled ( int id , bool enabled = true)

enabled 为 True,快捷方式采用给定 id 被启用;否则快捷方式被禁用。

警告: 应该通常不需要使用此函数,因为 Qt 的快捷方式系统会自动启用/禁用快捷方式当 Widget 变为隐藏/可见并获得 (或失去) 聚焦时。最好使用 QAction or QShortcut 处理快捷方式,因为它们比此低级函数更易于使用。

另请参阅 grabShortcut (), releaseShortcut (),和 QWidget::setShortcutEnabled ().

void QGraphicsWidget:: setStyle ( QStyle * style )

将 Widget 样式设为 style . QGraphicsWidget does not 拥有所有权对于 style .

若未赋值样式,或 style is nullptr ,Widget 将使用 QGraphicsScene::style () 若有设置。否则 Widget 将使用 QApplication::style ().

此函数设置 Qt::WA_SetStyle 属性若 style 不是 nullptr ;否则,它清零属性。

另请参阅 style ().

[static] void QGraphicsWidget:: setTabOrder ( QGraphicsWidget * first , QGraphicsWidget * second )

移动 second widget around the ring of focus widgets so that keyboard focus moves from the first widget to the second widget when the Tab key is pressed.

注意,由于选项卡次序对于 second 小部件已改变,应排序链像这样:

setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to d
					

not 像这样:

// WRONG
setTabOrder(c, d); // c to d
setTabOrder(a, b); // a to b AND c to d
setTabOrder(b, c); // a to b to c, but not c to d
					

first is nullptr , this indicates that second should be the first widget to receive input focus should the scene gain Tab focus (i.e., the user hits Tab so that focus passes into the scene). If second is nullptr , this indicates that first should be the first widget to gain focus if the scene gained BackTab focus.

By default, tab order is defined implicitly using widget creation order.

另请参阅 focusPolicy and Widget 中的键盘焦点 .

[since 5.14] void QGraphicsWidget:: setWindowFrameMargins ( QMarginsF margins )

Sets the widget's window frame margins to margins . The default frame margins are provided by the style, and they depend on the current window flags.

If you would like to draw your own window decoration, you can set your own frame margins to override the default margins.

该函数在 Qt 5.14 引入。

另请参阅 unsetWindowFrameMargins (), getWindowFrameMargins (),和 windowFrameRect ().

void QGraphicsWidget:: setWindowFrameMargins ( qreal left , qreal top , qreal right , qreal bottom )

这是重载函数。

Sets the widget's window frame margins to left , top , right and bottom .

[override virtual] QPainterPath QGraphicsWidget:: shape () const

重实现: QGraphicsItem::shape () const.

[virtual protected] void QGraphicsWidget:: showEvent ( QShowEvent * event )

此事件处理程序用于 Show events, is delivered before the widget has been shown, for example, setVisible(true) has been called for the widget or one of its ancestors when the widget was previously hidden.

You can reimplement this event handler to detect when your widget is shown. Calling QEvent::accept () 或 QEvent::ignore () 在 event 不起作用。

另请参阅 hideEvent (), QWidget::showEvent (),和 ItemVisibleChange .

[override virtual protected] QSizeF QGraphicsWidget:: sizeHint ( Qt::SizeHint which , const QSizeF & constraint = QSizeF()) const

重实现: QGraphicsLayoutItem::sizeHint (Qt::SizeHint which, const QSizeF &constraint) const.

QStyle *QGraphicsWidget:: style () const

Returns a pointer to the widget's style. If this widget does not have any explicitly assigned style, the scene's style is returned instead. In turn, if the scene does not have any assigned style, this function returns QApplication::style ().

另请参阅 setStyle ().

bool QGraphicsWidget:: testAttribute ( Qt::WidgetAttribute 属性 ) const

返回 true if 属性 is enabled for this widget; otherwise, returns false .

另请参阅 setAttribute ().

[override virtual] int QGraphicsWidget:: type () const

重实现: QGraphicsItem::type () const.

[virtual protected] void QGraphicsWidget:: ungrabKeyboardEvent ( QEvent * event )

此事件处理程序用于 event ,可以在子类中重实现以接收通知为 QEvent::UngrabKeyboard 事件。

另请参阅 ungrabKeyboard () 和 ungrabMouse ().

[virtual protected] void QGraphicsWidget:: ungrabMouseEvent ( QEvent * event )

此事件处理程序用于 event ,可以在子类中重实现以接收通知为 QEvent::UngrabMouse 事件。

另请参阅 ungrabMouse () 和 ungrabKeyboard ().

void QGraphicsWidget:: unsetWindowFrameMargins ()

Resets the window frame margins to the default value, provided by the style.

另请参阅 setWindowFrameMargins (), getWindowFrameMargins (),和 windowFrameRect ().

[override virtual protected] void QGraphicsWidget:: updateGeometry ()

重实现: QGraphicsLayoutItem::updateGeometry ().

If this widget is currently managed by a layout, this function notifies the layout that the widget's size hints have changed and the layout may need to resize and reposition the widget accordingly.

Call this function if the widget's sizeHint () has changed.

另请参阅 QGraphicsLayout::invalidate ().

[virtual protected] bool QGraphicsWidget:: windowFrameEvent ( QEvent * event )

此事件处理程序用于 event , receives events for the window frame if this widget is a window. Its base implementation provides support for default window frame interaction such as moving, resizing, etc.

You can reimplement this handler in a subclass of QGraphicsWidget to provide your own custom window frame interaction support.

返回 true if event 已被识别并处理;否则,返回 false .

另请参阅 event ().

QRectF QGraphicsWidget:: windowFrameGeometry () const

Returns the widget's geometry in parent coordinates including any window frame.

另请参阅 windowFrameRect (), getWindowFrameMargins (),和 setWindowFrameMargins ().

QRectF QGraphicsWidget:: windowFrameRect () const

Returns the widget's local rect including any window frame.

另请参阅 windowFrameGeometry (), getWindowFrameMargins (),和 setWindowFrameMargins ().

[virtual protected] Qt::WindowFrameSection QGraphicsWidget:: windowFrameSectionAt (const QPointF & pos ) const

Returns the window frame section at position pos ,或 Qt::NoSection if there is no window frame section at this position.

This function is used in QGraphicsWidget 's base implementation for window frame interaction.

You can reimplement this function if you want to customize how a window can be interactively moved or resized. For instance, if you only want to allow a window to be resized by the bottom right corner, you can reimplement this function to return Qt::NoSection for all sections except Qt::BottomRightSection .

另请参阅 windowFrameEvent (), paintWindowFrame (),和 windowFrameGeometry ().

Qt::WindowType QGraphicsWidget:: windowType () const

Returns the widgets window type.

另请参阅 windowFlags (), isWindow (),和 isPanel ().