Класс 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
- 31 общедоступных функций унаследованы от QObject
- 176 общедоступных функций унаследованы от QGraphicsItem
Открытые слоты
| bool | close() |
- 1 открытый слот унаследован от QObject
Сигналы
| void | geometryChanged() |
- 9 сигналов унаследовано от QGraphicsObject
- 2 сигнала унаследовано от QObject
Статические открытые члены
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов унаследовано от 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 защищённый слот унаследован от QGraphicsObject
Подробное описание
Класс 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 |
| Graphics View предоставляет собственный механизм перетаскивания, отличающийся от QWidget. | Стандартный механизм перетаскивания. |
| Элементы виджетов не поддерживают модальность. | Полная поддержка модальности. |
QGraphicsWidget поддерживает подмножество атрибутов виджетов Qt (Qt::WidgetAttribute), как показано в таблице ниже. Любые не перечисленные атрибуты не поддерживаются или не используются.
| Атрибут виджета | Использование |
|---|---|
| Qt::WA_SetLayoutDirection | Устанавливается функцией setLayoutDirection(), сбрасывается функцией unsetLayoutDirection(). Вы можете проверить этот атрибут, чтобы узнать, был ли виджету явно назначен layoutDirection. Если атрибут не установлен, layoutDirection() наследуется. |
| Qt::WA_RightToLeft | Включается/выключается функцией setLayoutDirection(). Наследуется от родительского элемента/сцены. Если установлен, макет виджета будет упорядочивать горизонтально расположенные виджеты справа налево. |
| Qt::WA_SetStyle | Устанавливается и сбрасывается функцией setStyle(). Если этот атрибут установлен, виджету явно назначен стиль. Если он не установлен, виджет будет использовать стиль сцены или приложения. |
| Qt::WA_Resized | Устанавливается функциями setGeometry() и resize(). |
| Qt::WA_SetPalette | Устанавливается функцией setPalette(). |
| Qt::WA_SetFont | Устанавливается функцией setFont(). |
| Qt::WA_WindowPropagation | Включает распространение на виджеты окна. |
Хотя QGraphicsWidget наследуется как от QObject, так и от QGraphicsItem, для управления отношениями между родительскими и дочерними элементами следует использовать функции, предоставленные QGraphicsItem, а не QObject. Эти функции управляют порядком расположения элементов, а также их владением.
Примечание: QObject::parent() всегда должна возвращать 0 для QGraphicsWidgets, но эта политика не строго определена.
См. также QGraphicsProxyWidget, QGraphicsItem и Виджеты и макеты.
Документация по типам членов
перечисление 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 равен 0, виджет остается без макета. Геометрии существующих дочерних виджетов остаются неизменными.
QGraphicsWidget принимает владение над layout.
Все виджеты, которые в настоящее время управляются layout или всеми его подмакетами, автоматически переназначаются в качестве потомков этого элемента. Затем макет аннулируется, и геометрия дочерних виджетов корректируется в соответствии с geometry() этого элемента и содержимого отступов.
Если макет не управляет данным виджетом, 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 истинно, эта функция выполняет поиск вперёд; если next ложно, выполняется поиск назад.
Иногда вам нужно будет переопределить эту функцию, чтобы обеспечить специальную обработку фокуса для вашего виджета и его дочерних элементов. Например, веб-браузер может переопределить её, чтобы переместить текущую активную ссылку вперёд или назад, и вызвать базовый метод только тогда, когда достигнута последняя или первая ссылка на странице.
Дочерние виджеты вызывают 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 в виде указателей на qreals. Каждый аргумент может быть пропущен, передав 0.
См. также setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom как указатели на qreals. Каждый аргумент может быть пропущен, передав 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 применяются к сцене.
Если один и тот же ключ sequence захвачен несколькими виджетами, при нажатии sequence событие QEvent::Shortcut отправляется всем виджетам, к которым оно относится, в непредсказуемом порядке, но с флагом «ambiguous» (неопределённый) установленными.
Предупреждение: Вам обычно не нужно использовать эту функцию; вместо этого создавайте 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.
[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)
Удаляет из системы сокращений Qt сокращение с заданным id. Виджет больше не будет получать события 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)).
Примечание: Функция-сеттер для свойства 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().
QGraphicsWidget's реализация sceneEvent() просто передаёт 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.
По умолчанию порядок табуляции определяется неявно в порядке создания виджетов.
См. также focusPolicy и Фокус клавиатуры в виджетах.
void QGraphicsWidget::setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom)
Устанавливает отступы рамки окна виджета на left, top, right и bottom. Отступы рамки по умолчанию предоставляются стилем и зависят от текущих флагов окна.
Если вы хотите нарисовать свою собственную декорированную рамку окна, вы можете установить свои собственные отступы рамки, чтобы переопределить значения по умолчанию.
См. также unsetWindowFrameMargins(), getWindowFrameMargins(), и windowFrameRect().
END_OF_DOCUMENT_MARKER
[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/qt-5.12/qgraphicswidget.html