Spec-Zone.ru › Qt 5.13

Класс QGraphicsWidget

Класс QGraphicsWidget является базовым классом для всех элементов виджетов в QGraphicsScene. Подробнее...

Заголовок: #include <QGraphicsWidget>
qmake: QT += widgets
С момента: Qt 4.4
Наследует: QGraphicsObject и QGraphicsLayoutItem
Наследуется от:

QGraphicsProxyWidget

Этот класс был представлен в Qt 4.4.

  • Список всех членов, включая наследуемые

Открытые типы

Перечисление безымянный { Тип }

Свойства

  • autoFillBackground : bool
  • focusPolicy : Qt::FocusPolicy
  • шрифт : QFont
  • геометрия : QRectF
  • макет : QGraphicsLayout*
  • направлениеМакет : Qt::LayoutDirection
  • максимальныйРазмер : const QSizeF
  • минимальныйРазмер : const QSizeF
  • палитрa : QPalette
  • предпочитаемыйРазмер : const QSizeF
  • размер : QSizeF
  • политикаразмера : const QSizePolicy
  • флагиОкна : Qt::WindowFlags
  • заголовокОкна : QString

Открытые функции

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(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

Открытые слоты

bool close()

Сигналы

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

Реализованные protected функции

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

Подробное описание

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() всегда должен возвращать nullptr для QGraphicsWidgets, но эта политика не строго определена.

См. также QGraphicsProxyWidget, QGraphicsItem и Элементы управления и макеты.

Документация типов членов

enum QGraphicsWidget::anonymous

Значение, возвращаемое виртуальной функцией type().

Константа Значение Описание
QGraphicsWidget::Type 11 Элемент графического виджета

Документация свойств

autoFillBackground : bool

Это свойство указывает, заполняется ли фоновый цвет виджета автоматически.

При включении этого свойства Qt заполняет фон виджета перед вызовом метода paint(). Используемый цвет определяется ролью цвета QPalette::Window из палитры виджета palette.

Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.

По умолчанию это свойство равно false.

Это свойство было введено в Qt 4.7.

Функции доступа:

bool autoFillBackground() const
void setAutoFillBackground(bool enabled)

См. также Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground.

focusPolicy : Qt::FocusPolicy

Это свойство определяет способ, которым виджет принимает фокус клавиатуры.

Политика фокуса — Qt::TabFocus, если виджет принимает фокус при нажатии клавиши Tab; Qt::ClickFocus, если виджет принимает фокус при щелчке; Qt::StrongFocus, если виджет принимает фокус и при щелчке, и при нажатии клавиши Tab; и 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)

См. также 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 = Qt::WindowFlags())

Создаёт экземпляр QGraphicsWidget. Необязательный аргумент parent передаётся конструктору QGraphicsItem. Необязательный аргумент wFlags задаёт флаги окна виджета (например, является ли виджет окном, инструментом, всплывающим окном и т. д.).

bool QGraphicsWidget::close()

Вызовите эту функцию для закрытия виджета.

Возвращает true если виджет был закрыт; в противном случае возвращает false. Этот слот сначала отправит событие QCloseEvent виджету, который может принять или не принять событие. Если событие было проигнорировано, ничего не происходит. Если событие было принято, оно скрывает виджет.

Если у виджета установлен атрибут Qt::WA_DeleteOnClose, он будет удалён.

void QGraphicsWidget::geometryChanged()

Этот сигнал генерируется всякий раз, когда геометрия изменяется в setGeometry().

Примечание: Сигнал уведомления для свойства geometry. Сигнал уведомления для свойства size.

~QGraphicsWidget QGraphicsWidget::~QGraphicsWidget()

Удаляет экземпляр QGraphicsWidget.

QList<QAction *> QGraphicsWidget::actions() const

Возвращает список (возможно пустой) действий этого виджета.

Функция была введена в Qt 4.5.

См. также insertAction(), removeAction(), QWidget::actions(), QAction::associatedWidgets() и QAction::associatedGraphicsWidgets().

void QGraphicsWidget::addAction(QAction *action)

Добавляет действие action в список действий этого виджета.

Все QGraphicsWidgets имеют список QActions, однако они могут быть представлены графически различными способами. По умолчанию использование списка QAction (как возвращается actions()) служит для создания контекстного QMenu.

QGraphicsWidget должен содержать только один экземпляр каждого действия, и добавление уже имеющегося действия не приведёт к добавлению того же действия дважды.

Функция была введена в Qt 4.5.

См. также removeAction(), insertAction(), actions() и QWidget::addAction().

void QGraphicsWidget::addActions(QList<QAction *> actions)

Добавляет действия actions в список действий этого виджета.

Функция была введена в Qt 4.5.

См. также removeAction(), QMenu, addAction() и QWidget::addActions().

void QGraphicsWidget::adjustSize()

Настраивает размер виджета на его эффективное предпочтительное значение размера.

Эта функция вызывается неявно при первом отображении элемента.

См. также effectiveSizeHint() и Qt::MinimumSize.

END_OF_DOCUMENT_MARKER

[override virtual] QRectF QGraphicsWidget::boundingRect() const

Reimplements: QGraphicsItem::boundingRect() const.

[virtual protected] void QGraphicsWidget::changeEvent(QEvent *event)

Этот обработчик событий можно переопределить для обработки изменений состояния.

Состояние, изменяющееся в этом событии, можно получить через event.

События изменения включают: QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::ParentChange, QEvent::LayoutDirectionChange и QEvent::ContentsRectChange.

[virtual protected] void QGraphicsWidget::closeEvent(QCloseEvent *event)

Этот обработчик событий для event можно переопределить в подклассе для получения событий закрытия виджета. По умолчанию реализация принимает событие.

См. также close() и QCloseEvent.

[override virtual protected] bool QGraphicsWidget::event(QEvent *event)

Reimplements: QGraphicsObject::event(QEvent *ev).

Обрабатывает событие event. QGraphicsWidget обрабатывает следующие события:

Событие Использование
Polish Доставляется виджету некоторое время после его отображения.
GraphicsSceneMove Доставляется виджету после изменения его локального положения.
GraphicsSceneResize Доставляется виджету после изменения его размера.
Show Доставляется виджету перед его отображением.
Hide Доставляется виджету после его скрытия.
PaletteChange Доставляется виджету после изменения его палитры.
FontChange Доставляется виджету после изменения его шрифта.
EnabledChange Доставляется виджету после изменения его состояния включения/выключения.
StyleChange Доставляется виджету после изменения его стиля.
LayoutDirectionChange Доставляется виджету после изменения его направления компоновки.
ContentsRectChange Доставляется виджету после изменения его отступов содержимого/области содержимого.

[override virtual protected] void QGraphicsWidget::focusInEvent(QFocusEvent *event)

Reimplements: QGraphicsItem::focusInEvent(QFocusEvent *event).

[virtual protected] bool QGraphicsWidget::focusNextPrevChild(bool next)

Ищет новый виджет, которому нужно указать фокус клавиатуры (как для Tab и Shift+Tab), и возвращает true если находит новый виджет; возвращает false в противном случае. Если next равно true, эта функция ищет вперед; если next равно false, она ищет назад.

Иногда вам захочется переопределить эту функцию, чтобы обеспечить специальную обработку фокуса для вашего виджета и его дочерних виджетов. Например, веб-браузер может переопределить его, чтобы переместить свой текущий активный элемент ссылки вперед или назад, и вызвать базовый метод только при достижении последней или первой ссылки на странице.

Дочерние виджеты вызывают focusNextPrevChild() для своих родительских виджетов, но только окно, которое содержит дочерние виджеты, решает, куда перенаправить фокус. Переопределяя эту функцию для объекта, вы получаете контроль над перемещением фокуса для всех дочерних виджетов.

См. также focusPolicy().

[override virtual protected] void QGraphicsWidget::focusOutEvent(QFocusEvent *event)

Reimplements: QGraphicsItem::focusOutEvent(QFocusEvent *event).

QGraphicsWidget *QGraphicsWidget::focusWidget() const

Если у этого виджета, дочернего виджета или потомка этого виджета в данный момент есть фокус ввода, эта функция вернет указатель на этот виджет. Если у ни одного потомка виджета нет фокуса ввода, возвращается nullptr.

См. также QGraphicsItem::focusItem() и QWidget::focusWidget().

[override virtual] void QGraphicsWidget::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const

Reimplements: QGraphicsLayoutItem::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const.

Получает отступы содержимого виджета. Отступы хранятся в left, top, right и bottom, как указатели на qreals. Каждый аргумент можно опустить, передав nullptr.

См. также setContentsMargins().

void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const

Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom как указатели на qreals. Каждый аргумент можно опустить, передав nullptr.

См. также setWindowFrameMargins() и windowFrameRect().

[virtual protected] void QGraphicsWidget::grabKeyboardEvent(QEvent *event)

Этот обработчик событий для event можно переопределить в подклассе для получения уведомлений о событиях QEvent::GrabKeyboard.

См. также grabKeyboard() и grabMouse().

[virtual protected] void QGraphicsWidget::grabMouseEvent(QEvent *event)

Этот обработчик событий для event можно переопределить в подклассе для получения уведомлений о событиях QEvent::GrabMouse.

См. также grabMouse() и grabKeyboard().

int QGraphicsWidget::grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut)

Добавляет ярлык в систему ярлыков Qt, который отслеживает указанную последовательность клавиш sequence в заданном context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае он локален для этого виджета (Qt::WidgetShortcut) или самого окна (Qt::WindowShortcut). Для виджетов, которые не являются частью окна (т.е. виджетов верхнего уровня и их дочерних элементов), ярлыки Qt::WindowShortcut применяются к сцене.

Если одну и ту же последовательность клавиш захватили несколько виджетов, при нажатии этой последовательности клавиш событие 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(QGraphicsSceneHoverEvent *event).

[override virtual protected] void QGraphicsWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

Реализует: QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event).

[virtual protected] void QGraphicsWidget::initStyleOption(QStyleOption *option) const

Заполняет объект стиля option данными об этом виджете на основе его текущего состояния и сохраняет результат в 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 для последовательности нажатия клавиш ярлыка (если у него нет других ярлыков с той же последовательностью нажатий клавиш).

END_OF_DOCUMENT_MARKER

Предупреждение: Обычно вам не нужно использовать эту функцию, так как система сокращений 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).

Реализация sceneEvent() в QGraphicsWidget просто передает 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(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 равен 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 и Фокус клавиатуры в виджетах.

END_OF_DOCUMENT_MARKER ```

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() 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.13/qgraphicswidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API