Класс QGraphicsWidget
Класс QGraphicsWidget является базовым классом для всех элементов виджетов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsWidget> |
| qmake: | QT += widgets |
| С момента: | Qt 4.4 |
| Наследуется от: | QGraphicsObject и QGraphicsLayoutItem |
| Наследует: |
Этот класс был представлен в Qt 4.4.
Общественные типы
| Перечисление | безымянный { Тип } |
Свойства
|
|
Общественные функции
| 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 |
Реализованные общедоступные функции
| 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 |
Public Slots
| bool | close() |
Signals
| void | geometryChanged() |
| void | layoutChanged() |
Static Public Members
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
Protected Functions
| 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 |
Reimplemented Protected Functions
| 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 |
Detailed Description
QGraphicsWidget — это расширенный базовый элемент, предоставляющий дополнительные функции по сравнению с QGraphicsItem. Он во многом похож на QWidget:
- Предоставляет палитру, шрифт и стиль.
- Имеет определённую геометрию.
- Поддерживает макеты с setLayout() и layout().
- Поддерживает ярлыки и действия с помощью grabShortcut() и insertAction()
В отличие от QGraphicsItem, QGraphicsWidget — это не абстрактный класс; вы можете создавать экземпляры QGraphicsWidget без необходимости его наследования. Этот подход полезен для виджетов, которые только служат для организации дочерних виджетов в макете.
QGraphicsWidget может использоваться как базовый элемент для вашего собственного пользовательского элемента, если вам требуется расширенная обработка фокуса ввода, например, фокус табуляции и активация, или макеты.
Поскольку QGraphicsWidget похож на QWidget и имеет похожий API, проще перенести виджет из QWidget в QGraphicsWidget, чем из QGraphicsItem.
Примечание: Виджеты на основе QWidget могут быть непосредственно встроены в QGraphicsScene с помощью QGraphicsProxyWidget.
Заметные различия между QGraphicsWidget и QWidget:
| QGraphicsWidget | QWidget |
|---|---|
| Координаты и геометрия определяются с помощью qreal (double или float в зависимости от платформы). | QWidget использует целочисленную геометрию (QPoint, QRect). |
| Виджет изначально видимый; вам не нужно вызывать show(), чтобы отобразить виджет. | QWidget скрыт по умолчанию, пока вы не вызовете show(). |
| Поддерживается подмножество атрибутов виджетов. | Поддерживаются все атрибуты виджетов. |
| Стиль верхнего элемента по умолчанию — QGraphicsScene::style | Стиль верхнего виджета по умолчанию — QApplication::style |
| Graphics View предоставляет собственную систему перетаскивания, отличную от QWidget. | Стандартная система перетаскивания. |
| Элементы виджета не поддерживают модальность. | Полная поддержка модальности. |
QGraphicsWidget поддерживает подмножество атрибутов виджетов Qt (Qt::WidgetAttribute), как показано в таблице ниже. Любые не перечисленные атрибуты не поддерживаются или не используются.
| Атрибут виджета | Использование |
|---|---|
| Qt::WA_SetLayoutDirection | Устанавливается с помощью setLayoutDirection() и сбрасывается с помощью unsetLayoutDirection(). Вы можете проверить этот атрибут, чтобы убедиться, что виджету явно назначено значение layoutDirection. Если атрибут не установлен, layoutDirection() наследуется. |
| Qt::WA_RightToLeft | Переключается с помощью setLayoutDirection(). Наследуется от родителя/сцены. Если установлен, расположение виджета будет упорядочивать горизонтально расположенные виджеты справа налево. |
| Qt::WA_SetStyle | Устанавливается и сбрасывается с помощью setStyle(). Если этот атрибут установлен, виджету явно назначен стиль. Если он не установлен, виджет будет использовать стиль сцены или приложения. |
| Qt::WA_Resized | Устанавливается с помощью setGeometry() и resize(). |
| Qt::WA_SetPalette | Устанавливается с помощью setPalette(). |
| Qt::WA_SetFont | Устанавливается с помощью setFont(). |
| Qt::WA_WindowPropagation | Включает распространение на виджеты окна. |
Хотя QGraphicsWidget наследует как от QObject, так и от QGraphicsItem, для управления отношениями между родительскими и дочерними элементами следует использовать функции, предоставляемые QGraphicsItem, а не QObject. Эти функции контролируют порядок размещения элементов в стеке, а также их владение.
Примечание: QObject::parent() всегда должна возвращать nullptr для 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, если виджет принимает фокус при нажатии клавиши 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 имеют список QAction, однако они могут быть представлены графически многими различными способами. По умолчанию использование списка 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() 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)
Реализует: QGraphicsObject::event(QEvent *ev).
Обрабатывает событие event. QGraphicsWidget обрабатывает следующие события:
| Событие | Использование |
|---|---|
| Polish | Доставляется виджету некоторое время после его показа. |
| GraphicsSceneMove | Доставляется виджету после изменения его локального положения. |
| GraphicsSceneResize | Доставляется виджету после изменения его размера. |
| Show | Доставляется виджету перед его показом. |
| Hide | Доставляется виджету после его скрытия. |
| PaletteChange | Доставляется виджету после изменения его палитры. |
| FontChange | Доставляется виджету после изменения его шрифта. |
| EnabledChange | Доставляется виджету после изменения его состояния включения. |
| StyleChange | Доставляется виджету после изменения его стиля. |
| LayoutDirectionChange | Доставляется виджету после изменения его направления макета. |
| ContentsRectChange | Доставляется виджету после изменения его отступов содержимого/ области содержимого. |
[override virtual protected] void QGraphicsWidget::focusInEvent(QFocusEvent *event)
Реализует: QGraphicsItem::focusInEvent(QFocusEvent *event).
[virtual protected] bool QGraphicsWidget::focusNextPrevChild(bool next)
Ищет новый виджет для получения фокуса клавиатуры, как это подходит для клавиш Tab и Shift+Tab, и возвращает true, если находит новый виджет; возвращает false в противном случае. Если next равно true, функция ищет вперёд; если next равно false, она ищет назад.
Иногда вам нужно переопределить эту функцию, чтобы обеспечить особую обработку фокуса для вашего виджета и его дочерних виджетов. Например, веб-браузер может переопределить её, чтобы переместить текущую активную ссылку вперёд или назад и вызвать базовую реализацию только тогда, когда достигнет последней или первой ссылки на странице.
Дочерние виджеты вызывают focusNextPrevChild() у своих родительских виджетов, но только окно, содержащее дочерние виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над перемещением фокуса для всех дочерних виджетов.
См. также focusPolicy().
[override virtual protected] void QGraphicsWidget::focusOutEvent(QFocusEvent *event)
Реализует: QGraphicsItem::focusOutEvent(QFocusEvent *event).
QGraphicsWidget *QGraphicsWidget::focusWidget() const
Если у этого виджета, дочернего или потомка этого виджета, в данный момент есть фокус ввода, эта функция вернёт указатель на этот виджет. Если ни один из дочерних виджетов не имеет фокус ввода, возвращается nullptr.
См. также QGraphicsItem::focusItem() и QWidget::focusWidget().
[override virtual] void QGraphicsWidget::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Реализует: QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const.
Получает отступы содержимого виджета. Отступы хранятся в left, top, right и bottom, как указатели на qreals. Каждый аргумент может быть пропущен, передав nullptr.
См. также setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom как указатели на qreals. Каждый аргумент может быть пропущен, передав nullptr.
См. также setWindowFrameMargins() и windowFrameRect().
[virtual protected] void QGraphicsWidget::grabKeyboardEvent(QEvent *event)
Этот обработчик событий для event можно переопределить в подклассе для получения уведомлений о событиях QEvent::GrabKeyboard.
См. также grabKeyboard() и grabMouse().
[virtual protected] void QGraphicsWidget::grabMouseEvent(QEvent *event)
Этот обработчик событий для event можно переопределить в подклассе для получения уведомлений о событиях QEvent::GrabMouse.
См. также grabMouse() и grabKeyboard().
int QGraphicsWidget::grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut)
Добавляет ярлык к системе ярлыков Qt, который отслеживает указанную последовательность клавиш sequence в заданном контексте context. Если context равен Qt::ApplicationShortcut, ярлык применим ко всему приложению. В противном случае, он либо локален для этого виджета, Qt::WidgetShortcut, или для самого окна, Qt::WindowShortcut. Для виджетов, которые не являются частью окна (т.е. виджетов верхнего уровня и их дочерних элементов), ярлыки Qt::WindowShortcut применяются к сцене.
Если тот же ярлык sequence взят несколькими виджетами, когда последовательность клавиш 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)).
Примечание: Функция-сеттер для свойства size.
См. также setGeometry() и setTransform().
[virtual protected] void QGraphicsWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
Обработчик событий, для событий GraphicsSceneResize, доставляется после изменения размера виджета (т.е. после изменения его локального размера). event содержит как старый, так и новый размер.
Это событие доставляется только при локальном изменении размера виджета; вызов setTransform() для виджета или любого из его предков или представления не влияет на локальный размер виджета.
Вы можете переопределить этот обработчик событий, чтобы обнаружить изменение размера вашего виджета. Вызов QEvent::accept() или QEvent::ignore() для event не имеет эффекта.
См. также geometry() и setGeometry().
[override virtual protected] bool QGraphicsWidget::sceneEvent(QEvent *event)
Переопределяет: QGraphicsItem::sceneEvent(QEvent *event).
QGraphicsWidget's реализация sceneEvent() просто передает event в QGraphicsWidget::event(). Вы можете обработать все события для вашего виджета в event() или в любой из удобных функций; вам не нужно переопределять эту функцию в подклассе QGraphicsWidget.
Возвращает true, если event был распознан и обработан; в противном случае возвращает false.
См. также QGraphicsItem::sceneEvent().
void QGraphicsWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Если on равно true, эта функция включает attribute; в противном случае attribute отключается.
См. документацию класса QGraphicsWidget для получения полного списка поддерживаемых атрибутов и их назначения.
См. также testAttribute() и QWidget::setAttribute().
void QGraphicsWidget::setContentsMargins(QMarginsF margins)
Устанавливает отступы содержимого виджета в margins.
Отступы содержимого используются назначенным макетом для определения расположения подвиджетов и макетов. Отступы особенно полезны для виджетов, которые ограничивают подвиджеты только частью собственной геометрии. Например, группа с макетом разместит подвиджеты внутри рамки, но ниже заголовка.
Изменение отступов содержимого виджета всегда вызывает update(), и любой назначенный макет будет активирован автоматически. Затем виджет получит событие ContentsRectChange.
Эта функция была введена в Qt 5.14.
См. также getContentsMargins() и setGeometry().
void QGraphicsWidget::setContentsMargins(qreal left, qreal top, qreal right, qreal bottom)
Это перегруженная функция.
Устанавливает отступы содержимого виджета в left, top, right и bottom.
void QGraphicsWidget::setGeometry(qreal x, qreal y, qreal w, qreal h)
Эта удобная функция эквивалентна вызову setGeometry(QRectF( x, y, w, h)).
Примечание: Функция-сеттер для свойства geometry.
См. также geometry() и resize().
void QGraphicsWidget::setLayout(QGraphicsLayout *layout)
Устанавливает макет для этого виджета в layout. Любой существующий менеджер макетов удаляется перед назначением нового макета. Если layout равен nullptr, виджет остается без макета. Геометрии существующих подвиджетов останутся неизменными.
Все виджеты, которые в настоящее время управляются layout или любым из его подмакетов, автоматически переродируются в этот элемент. Затем макет делает недействительным, и геометрия виджетов-потомков корректируется в соответствии с geometry() и contentsMargins() этого элемента. Потомки, которые не управляются явно layout, не затрагиваются макетом после назначения макета этому виджету.
QGraphicsWidget принимает во владение layout.
Примечание: Функция-сеттер для свойства layout.
См. также layout(), QGraphicsLinearLayout::addItem() и QGraphicsLayout::invalidate().
void QGraphicsWidget::setShortcutAutoRepeat(int id, bool enabled = true)
Если enabled равно true, автоматическое повторение ярлыка с данным id включено; в противном случае оно отключено.
Эта функция была введена в 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
Возвращает true, если attribute включено для этого виджета; в противном случае возвращает false.
См. также setAttribute().
[override virtual] int QGraphicsWidget::type() const
Переопределяет: QGraphicsItem::type() const.
[virtual protected] void QGraphicsWidget::ungrabKeyboardEvent(QEvent *event)
Этот обработчик событий, для event, может быть переопределён в подклассе для получения уведомлений о событиях QEvent::UngrabKeyboard.
См. также ungrabKeyboard() и ungrabMouse().
[virtual protected] void QGraphicsWidget::ungrabMouseEvent(QEvent *event)
Этот обработчик событий, для event, может быть переопределён в подклассе для получения уведомлений о событиях QEvent::UngrabMouse.
См. также ungrabMouse() и ungrabKeyboard().
void QGraphicsWidget::unsetWindowFrameMargins()
Сбрасывает отступы рамки окна до значения по умолчанию, предоставленного стилем.
См. также setWindowFrameMargins(), getWindowFrameMargins() и windowFrameRect().
[override virtual protected] void QGraphicsWidget::updateGeometry()
Переопределяет: QGraphicsLayoutItem::updateGeometry().
Если этот виджет в настоящее время управляется макетом, эта функция уведомляет макет о том, что размеры подсказок виджета изменились, и макет может потребовать соответствующим образом изменить размер и расположение виджета.
Вызовите эту функцию, если размеры подсказки виджета (sizeHint()) изменились.
См. также QGraphicsLayout::invalidate().
[virtual protected] bool QGraphicsWidget::windowFrameEvent(QEvent *event)
Этот обработчик событий, для event, получает события для рамки окна, если этот виджет является окном. Его базовая реализация предоставляет поддержку стандартного взаимодействия с рамкой окна, например, перемещения, изменения размера и т.д.
Вы можете переопределить этот обработчик в подклассе QGraphicsWidget, чтобы обеспечить поддержку пользовательского взаимодействия с рамкой окна.
Возвращает true, если event был распознан и обработан; в противном случае возвращает false.
См. также event().
QRectF QGraphicsWidget::windowFrameGeometry() const
Возвращает геометрию виджета в координатах родителя, включая любую рамку окна.
См. также windowFrameRect(), getWindowFrameMargins() и setWindowFrameMargins().
QRectF QGraphicsWidget::windowFrameRect() const
Возвращает локальный прямоугольник виджета, включая любую рамку окна.
См. также windowFrameGeometry(), getWindowFrameMargins() и setWindowFrameMargins().
[virtual protected] Qt::WindowFrameSection QGraphicsWidget::windowFrameSectionAt(const QPointF &pos) const
Возвращает раздел рамки окна в позиции pos или Qt::NoSection, если в этой позиции нет раздела рамки окна.
Эта функция используется в базовой реализации QGraphicsWidget для взаимодействия с рамкой окна.
Вы можете переопределить эту функцию, если хотите настроить, как окно можно перемещать или изменять размер интерактивно. Например, если вы хотите разрешить изменение размера окна только с помощью правого нижнего угла, вы можете переопределить эту функцию, чтобы возвращать Qt::NoSection для всех разделов, кроме Qt::BottomRightSection.
Эта функция была добавлена в 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.14/qgraphicswidget.html