Класс QGraphicsWidget
Класс QGraphicsWidget является базовым классом для всех элементов виджетов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QGraphicsObject и QGraphicsLayoutItem |
| Наследуется от: |
Типы публичного доступа
| Перечисление | безымянный { 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 attribute, 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 attribute) const |
| void | unsetLayoutDirection() |
| void | unsetWindowFrameMargins() |
| Qt::WindowFlags | windowFlags() const |
| QRectF | windowFrameGeometry() const |
| QRectF | windowFrameRect() const |
| QString | windowTitle() const |
| Qt::WindowType | windowType() const |
Реализованные публичные функции
| виртуальный QRectF | boundingRect() const override |
| виртуальный void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const override |
| виртуальный void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| виртуальный void | setGeometry(const QRectF &rect) override |
| виртуальный QPainterPath | shape() const override |
| виртуальный int | type() const override |
Public Slots
| bool | close() |
Signals
| void | geometryChanged() |
| void | layoutChanged() |
Static Public Members
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
Protected Functions
| виртуальный void | changeEvent(QEvent *event) |
| виртуальный void | closeEvent(QCloseEvent *event) |
| виртуальный bool | focusNextPrevChild(bool next) |
| виртуальный void | grabKeyboardEvent(QEvent *event) |
| виртуальный void | grabMouseEvent(QEvent *event) |
| виртуальный void | hideEvent(QHideEvent *event) |
| виртуальный void | initStyleOption(QStyleOption *option) const |
| виртуальный void | moveEvent(QGraphicsSceneMoveEvent *event) |
| виртуальный void | polishEvent() |
| виртуальный void | resizeEvent(QGraphicsSceneResizeEvent *event) |
| виртуальный void | showEvent(QShowEvent *event) |
| виртуальный void | ungrabKeyboardEvent(QEvent *event) |
| виртуальный void | ungrabMouseEvent(QEvent *event) |
| виртуальный bool | windowFrameEvent(QEvent *event) |
| виртуальный Qt::WindowFrameSection | windowFrameSectionAt(const QPointF &pos) const |
Реализованные Protected Functions
| виртуальный bool | event(QEvent *event) override |
| виртуальный void | focusInEvent(QFocusEvent *event) override |
| виртуальный void | focusOutEvent(QFocusEvent *event) override |
| виртуальный void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override |
| виртуальный void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) override |
| виртуальный QVariant | itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override |
| виртуальный bool | sceneEvent(QEvent *event) override |
| виртуальный QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override |
| виртуальный void | updateGeometry() override |
Подробное описание
QGraphicsWidget — это расширенный базовый элемент, который предоставляет дополнительные возможности по сравнению с QGraphicsItem. Он во многом похож на QWidget:
- Предоставляет палитру, шрифт и стиль.
- Имеет определённую геометрию.
- Поддерживает макеты с setLayout() и layout().
- Поддерживает ярлыки и действия с помощью grabShortcut() и insertAction()
В отличие от QGraphicsItem, QGraphicsWidget не является абстрактным классом; вы можете создавать экземпляры QGraphicsWidget без необходимости наследования от него. Этот подход полезен для виджетов, которые служат только для организации дочерних виджетов в макете.
QGraphicsWidget можно использовать в качестве базового элемента для собственного элемента, если вам необходима расширенная обработка фокуса ввода, например, фокус переходов и активации, или макеты.
Поскольку QGraphicsWidget похож на QWidget и имеет похожий API, проще перенести виджет из QWidget в QGraphicsWidget, чем из QGraphicsItem.
Примечание: Виджеты на основе QWidget могут быть непосредственно встроены в QGraphicsScene с помощью QGraphicsProxyWidget.
Заметные различия между QGraphicsWidget и QWidget:
| QGraphicsWidget | QWidget |
|---|---|
| Координаты и геометрия определяются с помощью qreals (double или float, в зависимости от платформы). | QWidget использует целочисленную геометрию (QPoint, QRect). |
| Виджет уже отображается по умолчанию; вам не нужно вызывать show(), чтобы отобразить виджет. | QWidget скрыт по умолчанию, пока вы не вызовете show(). |
| Поддерживается подмножество атрибутов виджета. | Поддерживаются все атрибуты виджета. |
| Стиль верхнего уровня элемента по умолчанию — QGraphicsScene::style | Стиль виджета верхнего уровня по умолчанию — QApplication::style |
| Graphics View предоставляет собственную систему перетаскивания, отличную от QWidget. | Стандартная система перетаскивания. |
| Элементы виджета не поддерживают модальность. | Полная поддержка модальности. |
QGraphicsWidget поддерживает подмножество атрибутов виджетов Qt (Qt::WidgetAttribute), как показано в таблице ниже. Любые атрибуты, не указанные в этой таблице, не поддерживаются или не используются.
| Атрибут виджета | Использование |
|---|---|
| Qt::WA_SetLayoutDirection | Устанавливается методом setLayoutDirection(), сбрасывается методом unsetLayoutDirection(). Вы можете проверить этот атрибут, чтобы узнать, был ли виджету явно задан layoutDirection. Если атрибут не установлен, layoutDirection() наследуется. |
| Qt::WA_RightToLeft | Включается методом setLayoutDirection(). Наследуется от родителя/сцены. Если установлен, расположение виджета будет упорядочивать горизонтальные виджеты справа налево. |
| Qt::WA_SetStyle | Устанавливается и сбрасывается методом setStyle(). Если этот атрибут установлен, виджету явно задан стиль. Если он не установлен, виджет будет использовать стиль сцены или приложения. |
| Qt::WA_Resized | Устанавливается методами setGeometry() и resize(). |
| Qt::WA_SetPalette | Устанавливается методом setPalette(). |
| Qt::WA_SetFont | Устанавливается методом setFont(). |
| Qt::WA_WindowPropagation | Включает распространение на виджеты окна. |
Хотя QGraphicsWidget наследуется как от QObject, так и от QGraphicsItem, следует использовать функции, предоставляемые QGraphicsItem, а не QObject, для управления отношениями между родительскими и дочерними элементами. Эти функции управляют порядком наложения элементов, а также их владением.
Примечание: Метод QObject::parent() всегда должен возвращать nullptr для QGraphicsWidgets, но эта политика не строго определена.
См. также QGraphicsProxyWidget, QGraphicsItem и Виджеты и макеты.
Документация по типам членов
перечисление QGraphicsWidget::anonymous
Значение, возвращаемое виртуальной функцией type().
| Константа | Значение | Описание |
|---|---|---|
QGraphicsWidget::Type |
11 |
Элемент графического виджета |
Документация по свойствам
autoFillBackground : bool
Это свойство указывает, заполняется ли фон виджета автоматически
Если включено, это свойство заставит Qt заполнить фон виджета перед вызовом метода paint(). Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета palette.
Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.
По умолчанию, это свойство равно false.
Функции доступа:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
См. также Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground.
focusPolicy : Qt::FocusPolicy
Это свойство определяет способ, которым виджет принимает фокус клавиатуры
Политика фокуса равна Qt::TabFocus, если виджет принимает фокус при нажатии клавиши табуляции, Qt::ClickFocus, если виджет получает фокус при щелчке, Qt::StrongFocus, если он принимает оба типа фокуса, и Qt::NoFocus (по умолчанию), если виджет не принимает фокус вообще.
Вы должны включить фокус клавиатуры для виджета, если он обрабатывает события клавиатуры. Это обычно делается из конструктора виджета. Например, конструктор QLineEdit вызывает setFocusPolicy(Qt::StrongFocus).
Если вы включаете политику фокуса (т.е., не Qt::NoFocus), QGraphicsWidget автоматически включит флаг ItemIsFocusable. Установка Qt::NoFocus для виджета очистит флаг ItemIsFocusable. Если у виджета в данный момент есть фокус клавиатуры, виджет автоматически потеряет фокус.
Функции доступа:
| Qt::FocusPolicy | focusPolicy() const |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
См. также focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent(), и enabled.
font : QFont
Это свойство содержит шрифт виджета
Это свойство содержит шрифт виджета.
QFont состоит из свойств шрифта, которые были явно определены, и свойств, неявно унаследованных от родительского виджета. Поэтому font() может возвращать другой шрифт по сравнению с тем, который был задан с помощью setFont(). Эта схема позволяет определять отдельные записи в шрифте, не влияя на унаследованные записи шрифта.
Когда шрифт виджета изменяется, он разрешает свои записи относительно родительского виджета. Если у виджета нет родительского виджета, он разрешает свои записи относительно сцены. Затем виджет отправляет себе событие FontChange и уведомляет всех своих потомков, чтобы они также могли разрешить свои шрифты.
По умолчанию это свойство содержит шрифт по умолчанию приложения.
Функции доступа:
| QFont | font() const |
| void | setFont(const QFont &font) |
См. также QApplication::font(), QGraphicsScene::font и QFont::resolve.
geometry : QRectF
Это свойство содержит геометрию виджета
Устанавливает геометрию элемента на rect. В результате вызова этой функции изменяются положение и размер элемента. Сначала элемент перемещается, затем изменяется его размер.
Побочным эффектом вызова этой функции является то, что виджет получит событие перемещения и событие изменения размера. Также, если виджету назначен макет, макет будет активирован.
Функции доступа:
| virtual void | setGeometry(const QRectF &rect) override |
| void | setGeometry(qreal x, qreal y, qreal w, qreal h) |
Сигнал уведомления:
| void | geometryChanged() |
См. также geometry() и resize().
layout : QGraphicsLayout*
Это свойство содержит макет виджета
Любой существующий менеджер макета удаляется перед назначением нового макета. Если layout равен nullptr, виджет остается без макета. Геометрии существующих подвиджетов остаются неизменными.
QGraphicsWidget принимает владение над layout.
Все виджеты, которые в настоящее время управляются layout или всеми его подмакетами, автоматически переопределяют своего родителя на этот элемент. Затем макет аннулируется, и геометрии виджетов-потомков корректируются в соответствии с геометрией этого элемента geometry() и отступами содержимого contentsMargins(). Потомки, которые явно не управляются layout, не затрагиваются макетом после его назначения этому виджету.
Если макет в настоящее время не управляет этим виджетом, layout() вернет nullptr.
Функции доступа:
| QGraphicsLayout * | layout() const |
| void | setLayout(QGraphicsLayout *layout) |
Сигнал уведомления:
| void | layoutChanged() |
layoutDirection : Qt::LayoutDirection
Это свойство содержит направление макета для этого виджета.
Это свойство изменяет атрибут Qt::WA_RightToLeft этого виджета и всех его потомков. Также оно устанавливает атрибут Qt::WA_SetLayoutDirection для этого виджета.
Направление макета виджета определяет порядок, в котором менеджер макета горизонтально располагает подвиджеты этого виджета. Значение по умолчанию зависит от языка и региональных параметров приложения и обычно совпадает с направлением чтения и письма слов. При использовании Qt::LeftToRight макет начинает размещать подвиджеты слева от этого виджета вправо. Qt::RightToLeft делает обратное - макет будет размещать виджеты, начиная с правого края, перемещаясь влево.
Подвиджеты наследуют направление макета от родительского. Элементы верхнего уровня виджета наследуют направление макета из QGraphicsScene::layoutDirection. Если вы измените направление макета виджета, вызвав setLayoutDirection(), виджет отправит себе событие LayoutDirectionChange, а затем распространит новое направление макета на всех своих потомков.
Функции доступа:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
См. также QWidget::layoutDirection и QApplication::layoutDirection.
maximumSize : const QSizeF
Это свойство содержит максимальный размер виджета
См. также setMaximumSize(), maximumSize(), minimumSize и preferredSize.
minimumSize : const QSizeF
Это свойство содержит минимальный размер виджета
См. также setMinimumSize(), minimumSize(), preferredSize и maximumSize.
palette : QPalette
Это свойство содержит палитру виджета
Это свойство содержит палитру виджета. Палитра предоставляет цвета и кисти для групп цветов (например, QPalette::Button) и состояний (например, QPalette::Inactive), в общих чертах определяя общий вид виджета и его потомков.
QPalette состоит из групп цветов, которые были явно определены, и групп, которые неявно унаследованы от родительского виджета. Из-за этого palette() может возвращать палитру, отличную от той, что была установлена с помощью setPalette(). Эта схема позволяет определять отдельные записи в палитре без влияния на унаследованные записи палитры.
Когда палитра виджета меняется, она разрешает свои записи относительно родительского виджета, или если у него нет родительского виджета, она разрешает их относительно сцены. Затем она отправляет себе событие PaletteChange и уведомляет всех своих потомков, чтобы они могли разрешить свои палитры также.
По умолчанию, это свойство содержит стандартную палитру приложения.
Функции доступа:
| QPalette | palette() const |
| void | setPalette(const QPalette &palette) |
См. также QGuiApplication::palette(), QGraphicsScene::palette, и QPalette::resolve().
preferredSize : const QSizeF
Это свойство содержит предпочтительный размер виджета.
См. также setPreferredSize(), preferredSize(), minimumSize, и maximumSize.
size : QSizeF
Это свойство содержит размер виджета.
Вызов resize() изменяет размер виджета на size, ограниченный minimumSize() и maximumSize(). Это свойство влияет только на ширину и высоту виджета (например, его правые и нижние края); положение и верхний левый угол виджета остаются неизменными.
Изменение размера виджета заставляет его немедленно получить событие GraphicsSceneResize со старым и новым размером виджета. Если у виджета назначен макет при получении этого события, макет будет активирован и автоматически обновит геометрию всех дочерних виджетов.
Это свойство не влияет на макет родительского виджета. Если сам виджет управляется родительским макетом, например, у него есть родительский виджет с назначенным макетом, этот макет не активируется.
По умолчанию это свойство содержит размер с нулевой шириной и высотой.
Функции доступа:
| QSizeF | size() const |
| void | resize(const QSizeF &size) |
| void | resize(qreal w, qreal h) |
Сигнал уведомления:
| void | geometryChanged() |
См. также setGeometry(), QGraphicsSceneResizeEvent, и QGraphicsLayout.
sizePolicy : const QSizePolicy
Это свойство содержит политику размера для виджета.
См. также sizePolicy(), setSizePolicy(), и QWidget::sizePolicy().
windowFlags : Qt::WindowFlags
Это свойство содержит флаги окна виджета.
Флаги окна представляют собой комбинацию типа окна (например, Qt::Dialog) и нескольких флагов, дающих подсказки о поведении окна. Поведение зависит от платформы.
По умолчанию это свойство не содержит флагов окна.
Окна — это панели. Если вы установите флаг Qt::Window, флаг ItemIsPanel будет установлен автоматически. Если вы снимите флаг Qt::Window, флаг ItemIsPanel также будет снят. Обратите внимание, что флаг ItemIsPanel может быть установлен независимо от Qt::Window.
Функции доступа:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags wFlags) |
См. также isWindow() и isPanel().
windowTitle : QString
Это свойство содержит заголовок окна (заголовок).
Это свойство используется только для окон.
По умолчанию, если заголовок не был установлен, это свойство содержит пустую строку.
Функции доступа:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &title) |
Документация по членам-функциям
QGraphicsWidget::QGraphicsWidget(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())
Создает экземпляр QGraphicsWidget. Необязательный аргумент parent передается конструктору QGraphicsItem. Необязательный аргумент wFlags определяет флаги окна виджета (например, является ли виджет окном, инструментом, всплывающим окном и т. д.).
bool QGraphicsWidget::close()
Вызовите эту функцию для закрытия виджета.
Возвращает true, если виджет был закрыт; в противном случае возвращает false. Этот слот сначала отправит QCloseEvent виджету, который может принять или не принять событие. Если событие было проигнорировано, ничего не происходит. Если событие было принято, оно скрывает виджет.
Если у виджета установлен атрибут Qt::WA_DeleteOnClose, он будет удален.
void QGraphicsWidget::geometryChanged()
Этот сигнал испускается всякий раз, когда геометрия изменяется в setGeometry().
Примечание: Сигнал уведомления для свойства geometry. Сигнал уведомления для свойства size.
QGraphicsWidget::~QGraphicsWidget()
Уничтожает экземпляр QGraphicsWidget.
QList<QAction *> QGraphicsWidget::actions() const
Возвращает список (возможно, пустой) действий этого виджета.
См. также insertAction(), removeAction(), QWidget::actions(), QAction::associatedWidgets(), и QAction::associatedGraphicsWidgets().
void QGraphicsWidget::addAction(QAction *action)
Добавляет действие action в список действий этого виджета.
Все QGraphicsWidgets имеют список QActionов, однако они могут отображаться графически многими разными способами. Стандартное использование списка QAction (как возвращается actions()) — это создание контекстного QMenu.
QGraphicsWidget должен содержать только один экземпляр каждого действия, и добавление уже имеющегося действия не приведет к дублированию этого действия в виджете.
См. также removeAction(), insertAction(), actions(), и QWidget::addAction().
void QGraphicsWidget::addActions(const QList<QAction *> &actions)
Добавляет действия actions в список действий этого виджета.
См. также removeAction(), QMenu, addAction(), и QWidget::addActions().
void QGraphicsWidget::adjustSize()
Настраивает размер виджета на его эффективный предпочтительный размер.
Эта функция вызывается неявно, когда элемент отображается впервые.
См. также effectiveSizeHint() и Qt::MinimumSize.
QRectF QGraphicsWidget::boundingRect() const
Переопределяет: QGraphicsItem::boundingRect() const.
void QGraphicsWidget::changeEvent(QEvent *event)
Этот обработчик событий может быть переопределён для обработки изменений состояния.
Состояние, изменяемое в данном событии, можно получить через 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 можно переопределить в подклассе для получения событий закрытия виджета. По умолчанию обработчик принимает событие.
См. также close() и QCloseEvent.
[override virtual protected] bool QGraphicsWidget::event(QEvent *event)
Переопределяет: QGraphicsObject::event(QEvent *ev).
Обрабатывает событие event. QGraphicsWidget обрабатывает следующие события:
| Событие | Использование |
|---|---|
| Polish | Доставляется виджету некоторое время после его отображения. |
| GraphicsSceneMove | Доставляется виджету после изменения его локального положения. |
| GraphicsSceneResize | Доставляется виджету после изменения его размера. |
| Show | Доставляется виджету перед его отображением. |
| Hide | Доставляется виджету после его скрытия. |
| PaletteChange | Доставляется виджету после изменения его палитры. |
| FontChange | Доставляется виджету после изменения его шрифта. |
| EnabledChange | Доставляется виджету после изменения его состояния включения/выключения. |
| StyleChange | Доставляется виджету после изменения его стиля. |
| LayoutDirectionChange | Доставляется виджету после изменения его направления выравнивания. |
| ContentsRectChange | Доставляется виджету после изменения его отступов содержимого/ области содержимого. |
[override virtual protected] void QGraphicsWidget::focusInEvent(QFocusEvent *event)
Переопределяет: QGraphicsItem::focusInEvent(QFocusEvent *event).
[virtual protected] bool QGraphicsWidget::focusNextPrevChild(bool next)
Ищет новый виджет для получения фокуса клавиатуры, как это нужно для клавиш Tab и Shift+Tab, и возвращает true, если новый виджет найден; возвращает false в противном случае. Если next истинно, функция ищет вперед; если next ложно, она ищет назад.
Иногда вам нужно переопределить эту функцию, чтобы обеспечить специальную обработку фокуса для вашего виджета и его дочерних элементов. Например, веб-браузер может переопределить ее, чтобы переместить текущую активную ссылку вперед или назад, и вызвать базовую реализацию только тогда, когда она достигнет последней или первой ссылки на странице.
Дочерние виджеты вызывают focusNextPrevChild() на своих родительских виджетах, но только окно, содержащее дочерние виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над перемещением фокуса для всех дочерних виджетов.
См. также focusPolicy().
[override virtual protected] void QGraphicsWidget::focusOutEvent(QFocusEvent *event)
Переопределяет: QGraphicsItem::focusOutEvent(QFocusEvent *event).
QGraphicsWidget *QGraphicsWidget::focusWidget() const
Если у этого виджета, дочернего или потомка этого виджета, в данный момент есть фокус ввода, эта функция вернет указатель на этот виджет. Если ни один дочерний виджет не имеет фокуса ввода, возвращается 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.
Получает отступы содержимого виджета. Отступы хранятся в left, top, right и bottom, как указатели на qreals. Каждый аргумент можно опустить, передав nullptr.
См. также setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom, как указатели на qreals. Каждый аргумент можно опустить, передав 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)
Добавляет ярлык в систему ярлыков Qt, который отслеживает заданную последовательность клавиш sequence в заданном контексте context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае он либо локален для данного виджета (Qt::WidgetShortcut), либо для самого окна (Qt::WindowShortcut). Для виджетов, которые не являются частью окна (т. е. виджетов верхнего уровня и их дочерних элементов), ярлыки Qt::WindowShortcut применяются к сцене.
Если тот же ярлык sequence захвачен несколькими виджетами, при нажатии последовательности клавиш sequence событие QEvent::Shortcut отправляется всем виджетам, к которым оно относится, в неопределенном порядке, но с установленным флагом ``ambiguous''.
Предупреждение: Вам обычно не нужно использовать эту функцию; вместо этого создавайте QAction с необходимыми последовательностями клавиш (если вам также нужны эквивалентные пункты меню и кнопки на панели инструментов) или создавайте QShortcut, если вам просто нужны последовательности клавиш. И QAction, и QShortcut обрабатывают всю фильтрацию событий за вас и предоставляют сигналы, которые срабатывают, когда пользователь нажимает последовательность клавиш, поэтому они намного проще в использовании, чем эта низкоуровневая функция.
См. также releaseShortcut(), setShortcutEnabled() и QWidget::grabShortcut().
[virtual protected] void QGraphicsWidget::hideEvent(QHideEvent *event)
Этот обработчик событий для событий Hide доставляется после того, как виджет был скрыт, например, была вызвана setVisible(false) для виджета или одного из его предков, когда виджет был ранее показан.
Вы можете переопределить этот обработчик событий, чтобы обнаружить, когда ваш виджет скрыт. Вызов 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
Заполняет объект стиля для этого виджета на основе его текущего состояния и сохраняет результат в option. По умолчанию реализация заполняет option следующими свойствами.
| Свойство объекта стиля | Значение |
|---|---|
| state & QStyle::State_Enabled | Соответствует QGraphicsItem::isEnabled(). |
| state & QStyle::State_HasFocus | Соответствует QGraphicsItem::hasFocus(). |
| state & QStyle::State_MouseOver | Соответствует QGraphicsItem::isUnderMouse(). |
| direction | Соответствует QGraphicsWidget::layoutDirection(). |
| rect | Соответствует QGraphicsWidget::rect().toRect(). |
| palette | Соответствует QGraphicsWidget::palette(). |
| fontMetrics | Соответствует QFontMetrics(QGraphicsWidget::font()). |
Подклассы QGraphicsWidget должны вызывать базовую реализацию, а затем проверять тип option, используя qstyleoption_cast<>() или проверять QStyleOption::Type перед сохранением свойств, специфичных для виджета.
Например:
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 в список действий этого виджета перед действием before. Присоединяет действие, если before равен нулю или before не является допустимым действием для этого виджета.
У QGraphicsWidget должно быть только одно из каждого действия.
См. такжеremoveAction(), addAction(), QMenu, actions(), и QWidget::insertActions().
void QGraphicsWidget::insertActions(QAction *before, const QList<QAction *> &actions)
Вставляет действия actions в список действий этого виджета перед действием before. Присоединяет действия, если before равен нулю или before не является допустимым действием для этого виджета.
У QGraphicsWidget может быть не более одного действия каждого типа.
См. такжеremoveAction(), QMenu, insertAction(), и QWidget::insertActions().
bool QGraphicsWidget::isActiveWindow() const
Возвращает значение true, если окно этого виджета является активным окном или если у виджета нет окна, но он находится в активной сцене (т.е. сцене, которая в настоящее время имеет фокус).
Активное окно — это окно, которое либо содержит дочерний виджет, который в данный момент имеет фокус ввода, либо само имеет фокус ввода.
См. также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 использует базовую реализацию этой функции для перехвата и доставки событий, связанных с изменениями состояния элемента. Поэтому очень важно, чтобы подклассы вызывали базовую реализацию.
change определяет тип изменения, а value — новое значение.
Например, QGraphicsWidget использует ItemVisibleChange для доставки событий Show и Hide, ItemPositionHasChanged для доставки событий Move, а ItemParentChange для доставки событий ParentChange и для управления цепочкой фокуса.
QGraphicsWidget по умолчанию включает флаг ItemSendsGeometryChanges для отслеживания изменений позиции.
См. такжеQGraphicsItem::itemChange().
QGraphicsLayout *QGraphicsWidget::layout() const
Возвращает макет этого виджета или nullptr, если в данный момент макет не управляет этим виджетом.
Примечание: Функция-геттер для свойства layout.
См. такжеsetLayout().
[virtual protected] void QGraphicsWidget::moveEvent(QGraphicsSceneMoveEvent *event)
Обработчик событий GraphicsSceneMove для событий, который вызывается после перемещения виджета (например, изменения его локального положения).
Это событие доставляется только при локальном перемещении элемента. Вызов setTransform() или перемещение любого из предков элемента не влияет на локальное положение элемента.
Вы можете переопределить этот обработчик событий, чтобы обнаружить, когда ваш виджет перемещен. Вызов QEvent::accept() или QEvent::ignore() для event не имеет никакого эффекта.
См. также ItemPositionChange и ItemPositionHasChanged.
[override virtual] void QGraphicsWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Переопределяет: QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget).
[virtual] void QGraphicsWidget::paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Эта виртуальная функция вызывается QGraphicsScene для отрисовки рамки окна для окон с использованием painter, option и widget в локальных координатах. Базовая реализация использует текущий стиль для рендеринга рамки и заголовка.
Вы можете переопределить эту функцию в подклассе QGraphicsWidget для предоставления пользовательской отрисовки рамки окна виджета.
См. такжеQGraphicsItem::paint().
[virtual protected] void QGraphicsWidget::polishEvent()
Это событие доставляется элементу сценой в какой-то момент после его создания, но до его отображения или другого доступа через сцену. Вы можете использовать этот обработчик событий для выполнения последних инициализаций виджета, которые требуют, чтобы элемент был полностью создан.
Базовая реализация ничего не делает.
QRectF QGraphicsWidget::rect() const
Возвращает локальную область элемента в виде QRectF. Эта функция эквивалентна QRectF(QPointF(), size()).
См. такжеsetGeometry() и resize().
void QGraphicsWidget::releaseShortcut(int id)
Удаляет ярлык с заданным id из системы ярлыков Qt. Виджет больше не будет получать события QEvent::Shortcut для последовательности клавиш ярлыка (если у него нет других ярлыков с той же последовательностью клавиш).
Предупреждение: Вам обычно не нужно использовать эту функцию, так как система ярлыков Qt автоматически удаляет ярлыки при уничтожении родительского виджета. Лучше использовать QAction или QShortcut для обработки ярлыков, так как они проще в использовании, чем эта функция низкого уровня. Заметьте также, что это дорогостоящая операция.
См. такжеgrabShortcut(), setShortcutEnabled(), и QWidget::releaseShortcut().
void QGraphicsWidget::removeAction(QAction *action)
Удаляет действие action из списка действий этого виджета.
См. такжеinsertAction(), actions(), insertAction(), и QWidget::removeAction().
void QGraphicsWidget::resize(qreal w, qreal h)
Это перегруженный метод.
Создаёт изменение размера с заданными width (w) и height (h). Этот вспомогательный метод эквивалентен вызову resize(QSizeF(w, h)).
Примечание: Метод-сеттер для свойства size.
См. также setGeometry() и setTransform().
[virtual protected] void QGraphicsWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
Этот обработчик событий GraphicsSceneResize вызывается после изменения размера виджета (т.е. изменения его локального размера). event содержит как старый, так и новый размер.
Это событие передаётся только при изменении размера виджета локально; вызов setTransform() для виджета или любого из его предков или представления не влияет на локальный размер виджета.
Вы можете переопределить этот обработчик событий, чтобы определить момент изменения размера вашего виджета. Вызов QEvent::accept() или QEvent::ignore() для event не имеет эффекта.
См. также geometry() и setGeometry().
[override virtual protected] bool QGraphicsWidget::sceneEvent(QEvent *event)
Переопределяет: QGraphicsItem::sceneEvent(QEvent *event).
Реализация QGraphicsWidget для sceneEvent() просто передаёт event в QGraphicsWidget::event(). Вы можете обрабатывать все события для своего виджета в event() или в любом из вспомогательных методов; вам не нужно переопределять этот метод в подклассе QGraphicsWidget.
Возвращает true, если событие event было распознано и обработано; в противном случае возвращает false.
См. также QGraphicsItem::sceneEvent().
void QGraphicsWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Если on равно true, этот метод включает attribute; в противном случае attribute отключается.
См. документацию класса QGraphicsWidget для получения полного списка поддерживаемых атрибутов и их назначения.
См. также testAttribute() и QWidget::setAttribute().
[since 5.14] void QGraphicsWidget::setContentsMargins(QMarginsF margins)
Устанавливает отступы содержимого виджета в margins.
Отступы содержимого используются назначенным макетом для определения расположения дочерних виджетов и макетов. Отступы особенно полезны для виджетов, которые ограничивают дочерние виджеты только определённой областью своей геометрии. Например, группа с макетом разместит дочерние виджеты внутри своей рамки, но ниже заголовка.
Изменение отступов содержимого виджета всегда вызывает update(), и любой назначенный макет автоматически активируется. Затем виджет получит событие ContentsRectChange.
Этот метод был добавлен в Qt 5.14.
См. также getContentsMargins() и setGeometry().
void QGraphicsWidget::setContentsMargins(qreal left, qreal top, qreal right, qreal bottom)
Это перегруженный метод.
Устанавливает отступы содержимого виджета в left, top, right и bottom.
void QGraphicsWidget::setGeometry(qreal x, qreal y, qreal w, qreal h)
Этот вспомогательный метод эквивалентен вызову setGeometry(QRectF( x, y, w, h)).
Примечание: Метод-сеттер для свойства geometry.
См. также geometry() и resize().
void QGraphicsWidget::setLayout(QGraphicsLayout *layout)
Устанавливает макет для этого виджета в layout. Любой существующий менеджер макета удаляется перед назначением нового макета. Если layout равен nullptr, виджет остаётся без макета. Геометрии существующих дочерних виджетов остаются неизменными.
Все виджеты, которые в настоящее время управляются layout или любым из его подмакетов, автоматически переназначаются этому элементу. Затем макет аннулируется, и геометрия дочерних виджетов корректируется в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые не управляются явно layout, остаются не затронутыми макетом после его назначения этому виджету.
QGraphicsWidget берёт на себя ответственность за layout.
Примечание: Метод-сеттер для свойства 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 автоматически включает/выключает сочетания клавиш, когда виджеты скрываются/отображаются и получают/теряют фокус. Лучше использовать QAction или QShortcut для обработки сочетаний клавиш, так как они проще в использовании, чем эта функция низкого уровня.
См. также grabShortcut(), releaseShortcut() и QWidget::setShortcutEnabled().
void QGraphicsWidget::setStyle(QStyle *style)
Устанавливает стиль виджета в style. QGraphicsWidget не берёт на себя ответственность за style.
Если стиль не назначен или style равен nullptr, виджет будет использовать QGraphicsScene::style() (если оно было установлено). В противном случае виджет будет использовать QApplication::style().
Этот метод устанавливает атрибут Qt::WA_SetStyle, если style не равен nullptr; в противном случае он очищает атрибут.
См. также style().
[static] void QGraphicsWidget::setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second)
Перемещает виджет second в цикле виджетов, получающих фокус, так что фокус клавиатуры переходит от виджета first к виджету second при нажатии клавиши Tab.
Обратите внимание, что поскольку порядок табуляции виджета 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
а не так:
// 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 равен nullptr, это означает, что second должен быть первым виджетом, получившим фокус, если сцена получила фокус Tab (т.е. пользователь нажал Tab, чтобы фокус перешёл на сцену). Если second равен nullptr, это означает, что first должен быть первым виджетом, получившим фокус, если сцена получила фокус BackTab.
По умолчанию порядок табуляции определяется неявно в порядке создания виджетов.
См. также focusPolicy и Фокус клавиатуры в виджетах.
[since 5.14] void QGraphicsWidget::setWindowFrameMargins(QMarginsF margins)
Устанавливает отступы рамки окна виджета в margins. Отступы рамки по умолчанию предоставляются стилем и зависят от текущих флагов окна.
Если вы хотите нарисовать собственную декорацию окна, вы можете установить собственные отступы рамки, чтобы переопределить отступы по умолчанию.
Этот метод был добавлен в Qt 5.14.
См. также unsetWindowFrameMargins(), getWindowFrameMargins() и windowFrameRect().
END_OF_DOCUMENT_MARKERvoid QGraphicsWidget::setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom)
Это перегруженный метод.
Устанавливает отступы рамки окна виджета в значения left, top, right и bottom.
[override virtual] QPainterPath QGraphicsWidget::shape() const
Переопределяет: QGraphicsItem::shape() const.
[virtual protected] void QGraphicsWidget::showEvent(QShowEvent *event)
Обработчик событий для событий типа Show вызывается до того, как виджет будет показан, например, после вызова setVisible(true) для виджета или одного из его предков, если виджет был ранее скрыт.
Вы можете переопределить этот обработчик, чтобы обнаруживать, когда ваш виджет показан. Вызов 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
Возвращает указатель на стиль виджета. Если у этого виджета нет явно заданного стиля, возвращается стиль сцены. В свою очередь, если у сцены нет заданного стиля, эта функция возвращает QApplication::style().
См. также setStyle().
bool QGraphicsWidget::testAttribute(Qt::WidgetAttribute attribute) const
Возвращает true, если attribute включено для этого виджета; в противном случае возвращает 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()
Сбрасывает отступы рамки окна до значения по умолчанию, предоставленного стилем.
См. также setWindowFrameMargins(), getWindowFrameMargins() и windowFrameRect().
[override virtual protected] void QGraphicsWidget::updateGeometry()
Переопределяет: QGraphicsLayoutItem::updateGeometry().
Если этот виджет в настоящее время управляется макетом, эта функция уведомляет макет о том, что размерные подсказки виджета изменились, и макет может потребоваться соответственно изменить размер и переместить виджет.
Вызовите эту функцию, если размерные подсказки виджета sizeHint() изменились.
См. также QGraphicsLayout::invalidate().
[virtual protected] bool QGraphicsWidget::windowFrameEvent(QEvent *event)
Этот обработчик событий, для event, получает события для рамки окна, если этот виджет является окном. Его базовая реализация предоставляет поддержку взаимодействия с рамкой окна по умолчанию, такой как перемещение, изменение размера и т. д.
Вы можете переопределить этот обработчик в подклассе QGraphicsWidget, чтобы предоставить свою собственную поддержку взаимодействия с рамкой окна.
Возвращает true, если event был распознан и обработан; в противном случае возвращает false.
См. также event().
QRectF QGraphicsWidget::windowFrameGeometry() const
Возвращает геометрию виджета в координатах родителя, включая любую рамку окна.
См. также windowFrameRect(), getWindowFrameMargins() и setWindowFrameMargins().
QRectF QGraphicsWidget::windowFrameRect() const
Возвращает локальный прямоугольник виджета, включая любую рамку окна.
См. также windowFrameGeometry(), getWindowFrameMargins() и setWindowFrameMargins().
[virtual protected] Qt::WindowFrameSection QGraphicsWidget::windowFrameSectionAt(const QPointF &pos) const
Возвращает область рамки окна в позиции pos или Qt::NoSection, если в данной позиции нет части рамки окна.
Эта функция используется в базовой реализации QGraphicsWidget для взаимодействия с рамкой окна.
Вы можете переопределить эту функцию, если хотите настроить, как окно может быть интерактивно перемещено или изменено. Например, если вы хотите разрешить изменение размера окна только в правом нижнем углу, вы можете переопределить эту функцию, чтобы возвращать Qt::NoSection для всех областей, кроме Qt::BottomRightSection.
См. также windowFrameEvent(), paintWindowFrame() и windowFrameGeometry().
Qt::WindowType QGraphicsWidget::windowType() const
Возвращает тип окна виджета.
См. также windowFlags(), isWindow() и isPanel().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qgraphicswidget.html