Класс QGraphicsWidget
Класс QGraphicsWidget является базовым классом для всех элементов виджетов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsWidget> |
| qmake: | QT += widgets |
| С момента: | Qt 4.4 |
| Наследует: | QGraphicsObject и QGraphicsLayoutItem |
| Наследуется от: |
Этот класс был представлен в Qt 4.4.
Типы публичного доступа
| Перечисление | безымянный { Type } |
Свойства
|
|
Открытые функции
| QGraphicsWidget(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags()) | |
| virtual | ~QGraphicsWidget() |
| QList<QAction *> | actions() const |
| void | addAction(QAction *action) |
| void | addActions(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, 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:
- Предоставляет палитрy, шрифт и стиль.
- Имеет определённую геометрию.
- Поддерживает макеты с помощью 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 |
| Графический просмотр предоставляет собственную систему перетаскивания, отличную от 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() для QGraphicsWidgets всегда должно возвращать nullptr, но эта политика не строго определена.
См. также QGraphicsProxyWidget, QGraphicsItem и Виджеты и макеты.
Документация типов членов
enum QGraphicsWidget::anonymous
Значение, возвращаемое виртуальной функцией type().
| Константа | Значение | Описание |
|---|---|---|
QGraphicsWidget::Type |
11 |
Элемент графического виджета |
Документация по свойствам
autoFillBackground : bool
Данное свойство определяет, заполняется ли фон виджета автоматически
При включенном значении этого свойства Qt заполнит фон виджета перед вызовом метода paint(). Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета palette.
Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.
По умолчанию это свойство равно false.
Это свойство было добавлено в Qt 4.7.
Функции доступа:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
См. также Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground.
focusPolicy : Qt::FocusPolicy
Это свойство определяет способ, которым виджет принимает фокус клавиатуры
Политика фокуса равна Qt::TabFocus, если виджет принимает фокус с помощью клавиши Tab; 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
Возвращает (возможно, пустой) список действий этого виджета.
Эта функция была добавлена в Qt 4.5.
См. также insertAction(), removeAction(), QWidget::actions(), QAction::associatedWidgets() и QAction::associatedGraphicsWidgets().
void QGraphicsWidget::addAction(QAction *action)
Добавляет действие action в список действий этого виджета.
Все QGraphicsWidgets имеют список QActions, однако они могут быть представлены графически многими разными способами. По умолчанию использование списка QAction (как возвращается actions()) — создание контекстного меню QMenu.
У QGraphicsWidget должен быть только один экземпляр каждого действия, и добавление действия, которое уже есть в виджете, не приведет к добавлению этого действия дважды.
Эта функция была добавлена в Qt 4.5.
См. также removeAction(), insertAction(), actions() и QWidget::addAction().
void QGraphicsWidget::addActions(QList<QAction *> actions)
Добавляет действия actions в список действий этого виджета.
Эта функция была добавлена в Qt 4.5.
См. также removeAction(), QMenu, addAction() и QWidget::addActions().
void QGraphicsWidget::adjustSize()
Настраивает размер виджета на его эффективный предпочтительный размер.
Эта функция вызывается неявно, когда элемент отображается впервые.
См. также effectiveSizeHint() и Qt::MinimumSize.
END_OF_DOCUMENT_MARKER
[override virtual] QRectF QGraphicsWidget::boundingRect() const
Reimplements: QGraphicsItem::boundingRect() const.
[virtual protected] 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)
Reimplements: 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)
Reimplements: 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)
Reimplements: 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
Reimplements: 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) установленным в true.
Предупреждение: Вам обычно не нужно использовать эту функцию; вместо этого создавайте QAction с необходимыми комбинациями клавиш (если вы также хотите эквивалентные пункты меню и кнопки на панели инструментов) или создавайте QShortcut, если вам просто нужны комбинации клавиш. Как QAction, так и QShortcut обрабатывают всю фильтрацию событий за вас и предоставляют сигналы, которые срабатывают при нажатии пользователем комбинации клавиш, поэтому их гораздо проще использовать, чем эту низкоуровневую функцию.
Эта функция была введена в Qt 4.5.
См. также releaseShortcut(), setShortcutEnabled() и QWidget::grabShortcut().
[virtual protected] void QGraphicsWidget::hideEvent(QHideEvent *event)
Этот обработчик событий для событий Hide доставляется после того, как виджет был скрыт, например, когда для виджета или одного из его предков была вызвана setVisible(false) при условии, что виджет был ранее показан.
Вы можете переопределить этот обработчик событий, чтобы определить момент скрытия вашего виджета. Вызов QEvent::accept() или QEvent::ignore() для event не оказывает никакого влияния.
См. также showEvent(), QWidget::hideEvent() и ItemVisibleChange.
END_OF_DOCUMENT_MARKER
[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 должен содержать только по одному экземпляру каждого действия.
Данная функция была добавлена в Qt 4.5.
См. также removeAction(), addAction(), QMenu, actions() и QWidget::insertActions().
void QGraphicsWidget::insertActions(QAction *before, QList<QAction *> actions)
Вставляет действия actions в список действий данного виджета перед действием before. Присоединяет действие, если before равен nullptr или before не является допустимым действием для данного виджета.
QGraphicsWidget может содержать не более одного экземпляра каждого действия.
Данная функция была добавлена в Qt 4.5.
См. также 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 для обработки сокращений, так как они проще в использовании, чем эта низкоуровневая функция. Также обратите внимание, что это ресурсоёмкая операция.
Эта функция была представлена в Qt 4.5.
См. также grabShortcut(), setShortcutEnabled() и QWidget::releaseShortcut().
void QGraphicsWidget::removeAction(QAction *action)
Удаляет действие action из списка действий этого виджета.
Эта функция была представлена в Qt 4.5.
См. также insertAction(), actions(), insertAction() и QWidget::removeAction().
void QGraphicsWidget::resize(qreal w, qreal h)
Это перегруженная функция.
Вызывает изменение размера с заданной width (w) и height (h). Эта вспомогательная функция эквивалентна вызову resize(QSizeF(w, h)).
Примечание: Функция-сеттер для свойства размер.
См. также 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().
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() и resize().
void QGraphicsWidget::setLayout(QGraphicsLayout *layout)
Устанавливает макет для этого виджета в layout. Любой существующий менеджер макета удаляется перед назначением нового макета. Если layout nullptr, виджет остается без макета. Геометрия существующих дочерних виджетов останется неизменной.
Все виджеты, которые в настоящее время управляются layout или всеми его подмакетами, автоматически переназначаются этому элементу. Затем макет делается недействительным, а геометрия дочерних виджетов корректируется в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые не управляются явно layout, остаются неизменными после назначения макета этому виджету.
QGraphicsWidget принимает владение layout.
Примечание: Функция-сеттер для свойства макета.
См. также layout(), QGraphicsLinearLayout::addItem() и QGraphicsLayout::invalidate().
void QGraphicsWidget::setShortcutAutoRepeat(int id, bool enabled = true)
Если enabled равно true, автоматическое повторение сокращения с заданным id включено; в противном случае оно отключено.
Эта функция была представлена в Qt 4.5.
См. также grabShortcut(), releaseShortcut() и QWidget::setShortcutAutoRepeat().
void QGraphicsWidget::setShortcutEnabled(int id, bool enabled = true)
Если enabled равно true, сокращение с заданным id включено; в противном случае сокращение отключено.
Предупреждение: Обычно использовать эту функцию не нужно, так как система сокращений Qt автоматически включает/отключает сокращения по мере скрытия/появления виджетов и получения/потери ими фокуса. Лучше использовать QAction или QShortcut для обработки сокращений, так как они проще в использовании, чем эта низкоуровневая функция.
Эта функция была представлена в Qt 4.5.
См. также 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 и Фокус клавиатуры в виджетах.
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
Возвращает значение истинно, если attribute включено для этого виджета; в противном случае возвращает ложь.
См. также 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, чтобы предоставить собственную поддержку взаимодействия с рамкой окна.
Возвращает значение истинно, если event был распознан и обработан; в противном случае возвращает ложь.
См. также 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.
Эта функция была добавлена в Qt 4.4.
См. также 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-5.15/qgraphicswidget.html