Класс 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 |
Reimplemented 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 |
Detailed Description
QGraphicsWidget — это расширенный базовый элемент, который предоставляет дополнительные возможности по сравнению с QGraphicsItem. Он во многом похож на QWidget:
- Предоставляет палитру, шрифт и стиль.
- Имеет определённую геометрию.
- Поддерживает макеты с помощью setLayout() и layout().
- Поддерживает ярлыки и действия с помощью grabShortcut() и insertAction()
В отличие от QGraphicsItem, QGraphicsWidget — это не абстрактный класс; вы можете создавать экземпляры QGraphicsWidget без необходимости его подклассирования. Этот подход полезен для виджетов, которые служат только для организации дочерних виджетов в макете.
QGraphicsWidget можно использовать как базовый элемент для вашего собственного элемента, если вам требуется расширенная обработка фокуса на ввод, например, фокус при нажатии клавиш Tab и активизация, или макеты.
Поскольку QGraphicsWidget похож на QWidget и имеет похожий API, проще перенести виджет из QWidget в QGraphicsWidget, чем из QGraphicsItem.
Примечание: Виджеты на основе QWidget могут быть непосредственно встроены в QGraphicsScene с помощью QGraphicsProxyWidget.
Заметные отличия между QGraphicsWidget и QWidget:
| QGraphicsWidget | QWidget |
|---|---|
| Координаты и геометрия определяются с помощью qreals (числа с плавающей точкой или double, в зависимости от платформы). | QWidget использует целую геометрию (QPoint, QRect). |
| Виджет по умолчанию уже виден; вам не нужно вызывать show(), чтобы отобразить виджет. | QWidget скрыт по умолчанию до тех пор, пока вы не вызовите show(). |
| Поддерживается подмножество атрибутов виджетов. | Поддерживаются все атрибуты виджетов. |
| Стиль верхнего элемента по умолчанию — QGraphicsScene::style | Стиль верхнего виджета по умолчанию — QApplication::style |
| Graphics View предоставляет собственную систему перетаскивания, отличную от QWidget. | Стандартная система перетаскивания. |
| Элементы виджетов не поддерживают модальность. | Полная поддержка модальности. |
QGraphicsWidget поддерживает подмножество атрибутов виджетов Qt (Qt::WidgetAttribute), как показано в таблице ниже. Любые атрибуты, не указанные в этой таблице, не поддерживаются или не используются.
END_OF_DOCUMENT_MARKER| Атрибут виджета | Использование |
|---|---|
| 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() для QGraphicsWidgets всегда должно возвращать nullptr, но эта политика не строго определена.
См. также 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 виджету, который может или не может принять событие. Если событие было проигнорировано, ничего не происходит. Если событие было принято, это приведет к hide() виджета.
Если у виджета установлен атрибут 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 имеют список QActions, но они могут быть представлены графически многими способами. По умолчанию, использование списка 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 имеет значение true, функция ищет вперед; если next имеет значение false, она ищет назад.
Иногда вам потребуется переопределить эту функцию, чтобы обеспечить специальную обработку фокуса для вашего виджета и его дочерних виджетов. Например, веб-браузер может переопределить ее для перемещения текущей активной ссылки вперед или назад и вызвать базовый реализацию только тогда, когда достигает последней или первой ссылки на странице.
Дочерние виджеты вызывают 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 захватили несколько виджетов, при её нажатии событие 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 равно nullptr или before не является допустимым действием для данного виджета.
В QGraphicsWidget может быть только одно действие каждого типа.
См. также removeAction(), addAction(), QMenu, actions(), и QWidget::insertActions().
void QGraphicsWidget::insertActions(QAction *before, const QList<QAction *> &actions)
Вставляет действия actions в список действий данного виджета перед действием before. Добавляет действия в конец, если before равно nullptr или 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().
END_OF_DOCUMENT_MARKERvoid 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's реализация 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().
void 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.2/qgraphicswidget.html