Класс QGraphicsWidget
Класс QGraphicsWidget является базовым классом для всех элементов виджетов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsWidget> |
| qmake: | QT += widgets |
| С момента: | Qt 4.4 |
| Наследует: | QGraphicsObject и QGraphicsLayoutItem |
| Наследуется от: |
Публичные типы
| Перечисление | безымянный { Type } |
Свойства
|
|
- 12 свойств унаследованных от QGraphicsObject
- 1 свойство унаследованное от QObject
Публичные функции
| QGraphicsWidget(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = ...) | |
| 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(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(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 |
Реализованные публичные функции
| virtual QRectF | boundingRect() const override |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const override |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| virtual void | setGeometry(const QRectF &rect) override |
| virtual QPainterPath | shape() const override |
| virtual int | type() const override |
- 2 общедоступных функции унаследованы от QGraphicsObject
- 35 общедоступных функций унаследованы от QGraphicsLayoutItem
- 34 общедоступных функции унаследованы от QObject
- 176 общедоступных функций унаследованы от QGraphicsItem
Публичные слоты
| bool | close() |
- 1 публичный слот унаследован от QObject
Сигналы
| void | geometryChanged() |
- 9 сигналов унаследовано от QGraphicsObject
- 2 сигнала унаследовано от QObject
Статические общедоступные члены
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
- 10 статических общедоступных членов унаследовано от QObject
Защищённые функции
| virtual void | changeEvent(QEvent *event) |
| virtual void | closeEvent(QCloseEvent *event) |
| virtual bool | focusNextPrevChild(bool next) |
| virtual void | grabKeyboardEvent(QEvent *event) |
| virtual void | grabMouseEvent(QEvent *event) |
| virtual void | hideEvent(QHideEvent *event) |
| virtual void | initStyleOption(QStyleOption *option) const |
| virtual void | moveEvent(QGraphicsSceneMoveEvent *event) |
| virtual void | polishEvent() |
| virtual void | resizeEvent(QGraphicsSceneResizeEvent *event) |
| virtual void | showEvent(QShowEvent *event) |
| virtual void | ungrabKeyboardEvent(QEvent *event) |
| virtual void | ungrabMouseEvent(QEvent *event) |
| virtual bool | windowFrameEvent(QEvent *event) |
| virtual Qt::WindowFrameSection | windowFrameSectionAt(const QPointF &pos) const |
Переопределённые защищённые функции
| virtual bool | event(QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *event) override |
| virtual void | focusOutEvent(QFocusEvent *event) override |
| virtual void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override |
| virtual void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) override |
| virtual QVariant | itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override |
| virtual bool | sceneEvent(QEvent *event) override |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override |
| virtual void | updateGeometry() override |
- 1 защищённая функция унаследована от QGraphicsObject
- 3 защищённых функции унаследованы от QGraphicsLayoutItem
- 9 защищённых функций унаследовано от QObject
- 24 защищённых функций унаследовано от QGraphicsItem
Дополнительные унаследованные члены
- 1 общедоступная переменная унаследована от QObject
- 1 защищённый слот унаследован от QGraphicsObject
- 2 защищённых переменных унаследовано от QObject
Подробное описание
Класс QGraphicsWidget — базовый класс для всех элементов виджетов в QGraphicsScene.
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 |
| Графический просмотр предоставляет собственную систему перетаскивания, отличающуюся от 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() всегда должен возвращать 0 для QGraphicsWidget, но эта политика не строго определена.
См. также QGraphicsProxyWidget, QGraphicsItem и Виджеты и макеты.
Документация по типам членов
enum QGraphicsWidget::anonymous
Значение, возвращаемое виртуальной функцией type().
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsWidget::Type |
11 |
Элемент графического виджета |
Документация по свойствам
autoFillBackground : bool
Это свойство указывает, заполняется ли фон виджета автоматически.
При включенном свойстве Qt заполняет фон виджета перед вызовом метода paint(). Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета.
Кроме того, окна всегда заполняются цветом 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, если виджет принимает фокус при нажатии клавиши табуляции, 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 равен 0, виджет остается без макета. Геометрии существующих дочерних виджетов останутся неизменными.
QGraphicsWidget принимает владение над layout.
Все виджеты, которые в данный момент управляются layout или любыми его дочерними макетами, автоматически переназначаются этому элементу. Затем макет аннулируется, и геометрии дочерних виджетов корректируются в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые не управляются явно layout, остаются неизменными после назначения макета этому виджету.
Если в данный момент макет не управляет этим виджетом, layout() вернет 0.
Функции доступа:
| QGraphicsLayout * | layout() const |
| void | setLayout(QGraphicsLayout *layout) |
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) |
См. также QApplication::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 = ...)
Создаёт экземпляр QGraphicsWidget. Необязательный аргумент parent передаётся конструктору QGraphicsItem. Необязательный аргумент wFlags задаёт флаги окна виджета (например, является ли виджет окном, инструментом, всплывающим окном и т. д.).
[virtual] 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 в список действий этого виджета.
Все QGraphicsWidget имеют список 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.
[override virtual] QRectF QGraphicsWidget::boundingRect() const
Переопределено из QGraphicsItem::boundingRect().
[virtual protected] void QGraphicsWidget::changeEvent(QEvent *event)
Этот обработчик событий может быть переопределён для обработки изменений состояния.
Состояние, изменяемое в этом событии, может быть получено через event.
События изменения включают: QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::ParentChange, QEvent::LayoutDirectionChange и QEvent::ContentsRectChange.
[slot] bool QGraphicsWidget::close()
Вызовите эту функцию для закрытия виджета.
Возвращает true, если виджет был закрыт; в противном случае возвращает false. Этот слот сначала отправит QCloseEvent виджету, который может или не может принять событие. Если событие было проигнорировано, ничего не произойдёт. Если событие было принято, виджет будет скрыт().
Если для виджета установлен атрибут Qt::WA_DeleteOnClose, он будет удалён.
[virtual protected] void QGraphicsWidget::closeEvent(QCloseEvent *event)
Этот обработчик событий для event может быть переопределён в подклассе для получения событий закрытия виджета. По умолчанию событие принимается.
См. также close() и QCloseEvent.
[override virtual protected] bool QGraphicsWidget::event(QEvent *event)
Переопределено из QGraphicsObject::event().
Обрабатывает событие event. QGraphicsWidget обрабатывает следующие события:
| Событие | Использование |
|---|---|
| Polish | Доставляется виджету некоторое время после его отображения. |
| GraphicsSceneMove | Доставляется виджету после изменения его локального положения. |
| GraphicsSceneResize | Доставляется виджету после изменения его размера. |
| Show | Доставляется виджету перед его отображением. |
| Hide | Доставляется виджету после его скрытия. |
| PaletteChange | Доставляется виджету после изменения его палитры. |
| FontChange | Доставляется виджету после изменения его шрифта. |
| EnabledChange | Доставляется виджету после изменения его состояния включения/выключения. |
| StyleChange | Доставляется виджету после изменения его стиля. |
| LayoutDirectionChange | Доставляется виджету после изменения направления его макета. |
| ContentsRectChange | Доставляется виджету после изменения его отступов содержимого/прямоугольника содержимого. |
[override virtual protected] void QGraphicsWidget::focusInEvent(QFocusEvent *event)
Переопределено из QGraphicsItem::focusInEvent().
[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().
QGraphicsWidget *QGraphicsWidget::focusWidget() const
Если у этого виджета, дочернего или потомка этого виджета, в данный момент есть фокус ввода, эта функция вернёт указатель на этот виджет. Если ни один дочерний виджет не имеет фокуса ввода, возвращается 0.
См. также QGraphicsItem::focusItem() и QWidget::focusWidget().
[signal] void QGraphicsWidget::geometryChanged()
Это сигнал, который излучается всякий раз, когда изменяется геометрия в setGeometry().
Примечание: Сигнал-уведомление для свойства geometry. Сигнал-уведомление для свойства size.
[override virtual] void QGraphicsWidget::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Переопределено из QGraphicsLayoutItem::getContentsMargins().
Получает отступы содержимого виджета. Отступы хранятся в left, top, right и bottom в качестве указателей на qreal. Каждый аргумент может быть опущен, передав 0.
См. также setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom в качестве указателей на qreal. Каждый аргумент может быть опущен, передав 0.
См. также 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 применяются к сцене.
Если ту же последовательность клавиш схватили несколько виджетов, при нажатии последовательности клавиш событие QEvent::Shortcut отправляется всем виджетам, к которым оно относится, в неопределённом порядке, но с установленным флагом «неясно».
Предупреждение: Обычно вам не нужно использовать эту функцию; вместо этого создавайте 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().
[override virtual protected] void QGraphicsWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Реализовано повторно из QGraphicsItem::hoverMoveEvent().
[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 равен 0 или before не является допустимым действием для этого виджета.
QGraphicsWidget должен содержать только по одному экземпляру каждого действия.
Данная функция была добавлена в Qt 4.5.
См. также removeAction(), addAction(), QMenu, actions(), и QWidget::insertActions().
void QGraphicsWidget::insertActions(QAction *before, QList<QAction *> actions)
Вставляет действия actions в список действий этого виджета перед действием before. Добавляет в конец списка, если before равен 0 или 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().
QGraphicsWidget использует базовую реализацию этой функции для захвата и передачи событий, связанных со изменениями состояния элемента. По этой причине очень важно, чтобы подклассы вызывали базовую реализацию.
change указывает тип изменения, а value — новое значение.
Например, QGraphicsWidget использует ItemVisibleChange для передачи событий Show и Hide, ItemPositionHasChanged для передачи событий Move, и ItemParentChange для передачи событий ParentChange, а также для управления цепочкой фокуса.
QGraphicsWidget включает флаг ItemSendsGeometryChanges по умолчанию для отслеживания изменений позиции.
См. также QGraphicsItem::itemChange().
QGraphicsLayout *QGraphicsWidget::layout() const
Возвращает макет этого виджета или 0, если макет в данный момент не управляет этим виджетом.
Примечание: Функция-получатель для свойства 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().
[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().
END_OF_DOCUMENT_MARKERvoid 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)).
Примечание: Функция-сеттер для свойства 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().
Реализация sceneEvent() в QGraphicsWidget просто передаёт event в QGraphicsWidget::event(). Вы можете обработать все события для своего виджета в event() или в любой из удобных функций; вам не нужно переопределять эту функцию в подклассе QGraphicsWidget.
См. также QGraphicsItem::sceneEvent().
void QGraphicsWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Если on равно true, эта функция включает attribute; в противном случае attribute выключается.
См. документацию класса QGraphicsWidget для полного списка поддерживаемых атрибутов и их предназначения.
См. также testAttribute() и QWidget::setAttribute().
void QGraphicsWidget::setContentsMargins(qreal left, qreal top, qreal right, qreal bottom)
Устанавливает отступы содержимого виджета в значения left, top, right и bottom.
Отступы содержимого используются применённым макетом для определения размещения дочерних виджетов и макетов. Отступы особенно полезны для виджетов, которые ограничивают дочерние виджеты только определённым участком собственной геометрии. Например, группа с макетом разместит дочерние виджеты внутри рамки, но под заголовком.
Изменение отступов содержимого виджета всегда вызывает update(), и любой применённый макет будет активирован автоматически. Затем виджет получит событие ContentsRectChange.
См. также getContentsMargins() и setGeometry().
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 равен 0, виджет остаётся без макета. Геометрии существующих дочерних виджетов останутся неизменными.
Все виджеты, которые в настоящее время управляются layout или любым из его дочерних макетов, автоматически переназначаются этому элементу. Затем макет аннулируется, и геометрия дочерних виджетов корректируется в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые не управляются явно layout, не изменяются макетом после его назначения этому виджету.
QGraphicsWidget берёт на себя владение layout.
Примечание: Функция-сеттер для свойства 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 равен 0, виджет будет использовать QGraphicsScene::style() (если он был установлен). В противном случае виджет будет использовать QApplication::style().
Эта функция устанавливает атрибут Qt::WA_SetStyle, если style не равен 0; в противном случае атрибут очищается.
См. также 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 равен 0, это означает, что second должен быть первым виджетом, который получит фокус, если сцена получит фокус Tab (т.е. пользователь нажимает Tab, чтобы передать фокус в сцену). Если second равен 0, это означает, что first должен быть первым виджетом, который получит фокус, если сцена получит фокус BackTab.
По умолчанию порядок следования Tab определяется неявно в порядке создания виджетов.
См. также focusPolicy и Фокус клавиатуры в виджетах.
void QGraphicsWidget::setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom)
Устанавливает отступы рамки окна виджета в значения left, top, right и bottom. Отступы рамки по умолчанию предоставляются стилем и зависят от текущих флагов окна.
Если вы хотите нарисовать собственную декорацию окна, вы можете установить собственные отступы рамки, чтобы переопределить отступы по умолчанию.
См. также unsetWindowFrameMargins(), getWindowFrameMargins(), и windowFrameRect().
[override virtual] QPainterPath QGraphicsWidget::shape() const
Переопределено из QGraphicsItem::shape().
[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().
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().
[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.
Эта функция была добавлена в 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/archives/qt-5.11/qgraphicswidget.html