Класс QGraphicsWidget
Класс QGraphicsWidget — базовый класс для всех элементов виджетов в QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsWidget> |
| qmake: | QT += widgets |
| С момента: | Qt 4.4 |
| Наследует: | QGraphicsObject и QGraphicsLayoutItem |
| Наследуется: |
Свойства
|
|
- 12 свойств, унаследованных от QGraphicsObject
- 1 свойство, унаследованное от QObject
Открытые функции
| QGraphicsWidget(QGraphicsItem *parent = Q_NULLPTR, Qt::WindowFlags wFlags = Qt::WindowFlags()) | |
| ~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 = Q_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 |
| virtual void | getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) |
| virtual void | setGeometry(const QRectF &rect) |
| virtual QPainterPath | shape() const |
| virtual int | type() const |
- 2 общедоступных функции унаследованы от QGraphicsObject
- 35 общедоступных функций унаследованы от QGraphicsLayoutItem
- 32 общедоступных функций унаследованы от QObject
- 176 общедоступных функций унаследованы от QGraphicsItem
Общедоступные слоты
| bool | close() |
- 1 общедоступный слот унаследован от QObject
Сигналы
| void | geometryChanged() |
- 9 сигналов унаследовано от QGraphicsObject
- 2 сигнала унаследовано от QObject
Статические общедоступные члены
| void | setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second) |
- 11 статических общедоступных членов унаследовано от QObject
- 2 статических общедоступных члена унаследовано от QGraphicsItem
Защищённые функции
| 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) |
| virtual void | focusInEvent(QFocusEvent *event) |
| virtual void | focusOutEvent(QFocusEvent *event) |
| virtual void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) |
| virtual void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) |
| virtual QVariant | itemChange(GraphicsItemChange change, const QVariant &value) |
| virtual bool | sceneEvent(QEvent *event) |
| virtual QSizeF | sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const |
| virtual void | updateGeometry() |
- 1 защищённая функция унаследована от QGraphicsObject
- 3 защищённых функций унаследовано от QGraphicsLayoutItem
- 9 защищённых функций унаследовано от QObject
- 24 защищённых функций унаследовано от QGraphicsItem
Дополнительные унаследованные члены
- 1 защищённый слот унаследован от QGraphicsObject
Подробное описание
Класс QGraphicsWidget — базовый класс для всех элементов виджетов в QGraphicsScene.
QGraphicsWidget — расширенный базовый элемент, предоставляющий дополнительные возможности по сравнению с QGraphicsItem. Он во многом похож на QWidget:
- Предоставляет палитру, шрифт и стиль.
- Имеет определённую геометрию.
- Поддерживает макеты с помощью setLayout() и layout().
- Поддерживает ярлыки и действия с помощью grabShortcut() и insertAction()
В отличие от QGraphicsItem, QGraphicsWidget — не абстрактный класс; вы можете создавать экземпляры QGraphicsWidget, не создавая подкласс. Этот подход полезен для виджетов, которые служат только для упорядочивания дочерних виджетов в макете.
QGraphicsWidget может использоваться в качестве базового элемента для вашего собственного элемента, если вам требуется расширенная обработка фокуса ввода, например, фокус при нажатии клавиши Tab и активация, или макеты.
Поскольку QGraphicsWidget похож на QWidget и имеет похожий API, проще перенести виджет из QWidget в QGraphicsWidget, чем в QGraphicsItem.
Примечание: виджеты на основе QWidget могут быть непосредственно встроены в QGraphicsScene с помощью QGraphicsProxyWidget.
Заметные различия между QGraphicsWidget и QWidget:
| QGraphicsWidget | QWidget |
|---|---|
| Координаты и геометрия определены с помощью qreals (double или float, в зависимости от платформы). | QWidget использует целочисленную геометрию (QPoint, QRect). |
| Виджет по умолчанию уже отображается; вам не нужно вызывать show(), чтобы отобразить виджет. | QWidget скрыт по умолчанию, пока вы не вызовете show(). |
| Поддерживается подмножество атрибутов виджетов. | Поддерживаются все атрибуты виджетов. |
| Стиль верхнего уровня элемента по умолчанию — QGraphicsScene::style | Стиль виджета верхнего уровня по умолчанию — QApplication::style |
| Графический просмотр предоставляет собственную систему перетаскивания, отличную от QWidget. | Стандартная система перетаскивания. |
| Элементы виджетов не поддерживают модальный режим. | Полная поддержка модального режима. |
QGraphicsWidget поддерживает подмножество атрибутов виджетов Qt (Qt::WidgetAttribute), как показано в таблице ниже. Любые атрибуты, не указанные в этой таблице, не поддерживаются или в ином случае не используются.
| Атрибут виджета | Использование |
|---|---|
| Qt::WA_SetLayoutDirection | Устанавливается методом setLayoutDirection(), очищается методом unsetLayoutDirection(). Вы можете проверить этот атрибут, чтобы узнать, был ли виджету явно задан layoutDirection. Если атрибут не установлен, layoutDirection() наследуется. |
| Qt::WA_RightToLeft | Включается методом setLayoutDirection(). Наследуется от родителя/сцены. Если установлен, макет виджета будет упорядочивать горизонтально расположенные виджеты справа налево. |
| Qt::WA_SetStyle | Устанавливается и очищается методом setStyle(). Если этот атрибут установлен, стили виджета явно заданы. Если он не установлен, виджет будет использовать стиль сцены или приложения. |
| Qt::WA_Resized | Устанавливается методами setGeometry() и resize(). |
| Qt::WA_SetPalette | Устанавливается методом setPalette(). |
| Qt::WA_SetFont | Устанавливается методом setFont(). |
| Qt::WA_WindowPropagation | Включает распространение на виджеты окна. |
Хотя QGraphicsWidget наследуется как от QObject, так и от QGraphicsItem, для управления отношениями между родительскими и дочерними элементами следует использовать функции, предоставляемые QGraphicsItem, а не QObject. Эти функции контролируют порядок стека элементов, а также их владение.
Примечание: QObject::parent() для QGraphicsWidgets всегда должен возвращать 0, но эта политика не строго определена.
См. также QGraphicsProxyWidget, QGraphicsItem и Виджеты и макеты.
Свойства
autoFillBackground : bool
Это свойство определяет, автоматически ли заполняется фон виджета.
Если включено, это свойство заставит Qt заполнить фон виджета перед вызовом метода paint(). Используемый цвет определяется цветовой ролью QPalette::Window из палитры виджета.
Кроме того, окна всегда заполняются цветом QPalette::Window, если не установлены атрибуты WA_OpaquePaintEvent или WA_NoSystemBackground.
По умолчанию, это свойство равно false.
Это свойство было введено в Qt 4.7.
Функции доступа:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
См. также Qt::WA_OpaquePaintEvent и Qt::WA_NoSystemBackground.
focusPolicy : Qt::FocusPolicy
Это свойство определяет способ получения виджетом фокуса клавиатуры.
Политика фокуса равна Qt::TabFocus, если виджет принимает фокус клавиатуры при переходе по табуляции, Qt::ClickFocus, если виджет принимает фокус при клике, Qt::StrongFocus, если он принимает и то и другое, и Qt::NoFocus (по умолчанию), если он вообще не принимает фокус.
Вы должны включить фокус клавиатуры для виджета, если он обрабатывает события клавиатуры. Обычно это делается из конструктора виджета. Например, конструктор QLineEdit вызывает setFocusPolicy(Qt::StrongFocus).
Если вы включаете политику фокуса (т.е. не Qt::NoFocus), QGraphicsWidget автоматически включит флаг ItemIsFocusable. Установка Qt::NoFocus для виджета сбросит флаг ItemIsFocusable. Если виджет в данный момент имеет фокус клавиатуры, виджет автоматически потеряет фокус.
Функции доступа:
| Qt::FocusPolicy | focusPolicy() const |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
См. также focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent(), и enabled.
font : QFont
Это свойство хранит шрифт виджета.
Это свойство предоставляет шрифт виджета.
QFont состоит из свойств шрифта, которые были явно определены, и свойств, неявно унаследованных от родительского виджета. Следовательно, font() может возвращать другой шрифт по сравнению с тем, который установлен с помощью setFont(). Эта схема позволяет определять отдельные записи в шрифте, не затрагивая унаследованные записи шрифта.
Когда шрифт виджета изменяется, он разрешает свои записи относительно своего родительского виджета. Если виджет не имеет родительского виджета, он разрешает свои записи относительно сцены. Затем виджет отправляет себе событие FontChange и уведомляет всех своих потомков, чтобы они также могли разрешить свои шрифты.
По умолчанию это свойство содержит шрифт по умолчанию приложения.
Функции доступа:
| QFont | font() const |
| void | setFont(const QFont &font) |
См. также QApplication::font(), QGraphicsScene::font, и QFont::resolve().
geometry : QRectF
Это свойство содержит геометрию виджета.
Устанавливает геометрию элемента в rect. Положение и размер элемента изменяются в результате вызова этой функции. Сначала элемент перемещается, затем изменяется его размер.
Побочным эффектом вызова этой функции является то, что виджет получит событие перемещения и событие изменения размера. Кроме того, если виджету назначен макет, макет активируется.
Функции доступа:
| virtual void | setGeometry(const QRectF &rect) |
| void | setGeometry(qreal x, qreal y, qreal w, qreal h) |
Сигнал уведомления:
| void | geometryChanged() |
См. также geometry() и resize().
layout : QGraphicsLayout *
Это свойство содержит макет виджета.
Любой существующий менеджер макетов удаляется до того, как будет назначен новый макет. Если layout равен 0, виджет останется без макета. Геометрия существующих подвиджетов останется неизменной.
QGraphicsWidget становится владельцем layout.
Все виджеты, которые в настоящее время управляются layout или любыми его подмакетами, автоматически становятся дочерними элементами этого элемента. Затем макет становится недействительным, и геометрия дочерних виджетов корректируется в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые явно не управляются layout, не затрагиваются макетом после того, как он будет назначен этому виджету.
Если в данный момент никакой макет не управляет этим виджетом, layout() вернет 0.
Функции доступа:
| QGraphicsLayout * | layout() const |
| void | setLayout(QGraphicsLayout *layout) |
layoutDirection : Qt::LayoutDirection
Это свойство хранит направление макета для этого виджета.
Это свойство изменяет атрибут Qt::WA_RightToLeft этого виджета и всех его потомков. Он также устанавливает атрибут Qt::WA_SetLayoutDirection этого виджета.
Направление макета виджета определяет порядок, в котором менеджер макетов горизонтально упорядочивает дочерние виджеты этого виджета. Значение по умолчанию зависит от языка и региональных параметров приложения и обычно совпадает с направлением чтения и написания слов. С Qt::LeftToRight макет начинает размещать дочерние виджеты с левой стороны этого виджета вправо. Qt::RightToLeft делает наоборот — макет будет размещать виджеты, начиная с правого края и двигаясь влево.
Дочерние виджеты наследуют направление своего макета от родителя. Виджеты верхнего уровня наследуют направление своего макета от QGraphicsScene::layoutDirection. Если вы измените направление макета виджета, вызвав setLayoutDirection(), виджет отправит себе событие LayoutDirectionChange, а затем распространит новое направление макета на всех своих потомков.
Функции доступа:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
См. также QWidget::layoutDirection и QApplication::layoutDirection.
maximumSize : const QSizeF
Это свойство содержит максимальный размер виджета.
См. также setMaximumSize(), maximumSize(), minimumSize, и preferredSize.
minimumSize : const QSizeF
Это свойство содержит минимальный размер виджета.
См. также setMinimumSize(), minimumSize(), preferredSize, и maximumSize.
palette : QPalette
Это свойство содержит палитру виджета.
Это свойство предоставляет палитру виджета. Палитра предоставляет цвета и кисти для цветовых групп (например, QPalette::Button) и состояний (например, QPalette::Inactive), приблизительно определяя общий вид виджета и его дочерних элементов.
QPalette состоит из групп цветов, которые были явно определены, и групп, неявно унаследованных от родительского виджета. Из-за этого, palette() может возвращать палитру, отличную от той, что была установлена с помощью setPalette(). Эта схема позволяет определять отдельные записи в палитре, не затрагивая унаследованные записи.
Когда палитра виджета изменяется, он разрешает свои записи по отношению к родительскому виджету, или если у него нет родительского виджета, он разрешает их по отношению к сцене. Затем он отправляет себе событие PaletteChange и уведомляет всех своих потомков, чтобы они могли также разрешить свои палитры.
По умолчанию это свойство содержит стандартную палитру приложения.
Функции доступа:
| QPalette | palette() const |
| void | setPalette(const QPalette &palette) |
См. также QApplication::palette(), QGraphicsScene::palette и QPalette::resolve.
preferredSize : const QSizeF
Это свойство содержит предпочтительный размер виджета.
См. также setPreferredSize(), preferredSize(), minimumSize и maximumSize.
size : QSizeF
Это свойство содержит размер виджета.
Вызов resize() изменяет размер виджета до размера size, ограниченного minimumSize() и maximumSize(). Это свойство влияет только на ширину и высоту виджета (например, на его правую и нижнюю границы); положение виджета и его верхний левый угол не изменяются.
Изменение размера виджета вызывает немедленное получение виджетом события GraphicsSceneResize со старым и новым размерами виджета. Если у виджета назначен макет при получении этого события, макет будет активирован, и он автоматически обновит геометрию всех дочерних виджетов.
Это свойство не влияет на любой макет родительского виджета. Если сам виджет управляется родительским макетом; например, у него есть родительский виджет с назначенным макетом, этот макет не будет активирован.
По умолчанию это свойство содержит размер с нулевой шириной и высотой.
Функции доступа:
| QSizeF | size() const |
| void | resize(const QSizeF &size) |
| void | resize(qreal w, qreal h) |
Сигнал уведомления:
| void | geometryChanged() |
См. также setGeometry(), QGraphicsSceneResizeEvent и QGraphicsLayout.
sizePolicy : const QSizePolicy
Это свойство содержит политику размера для виджета.
См. также sizePolicy(), setSizePolicy() и QWidget::sizePolicy().
windowFlags : Qt::WindowFlags
Это свойство содержит флаги окна виджета.
Флаги окна представляют собой комбинацию типа окна (например, Qt::Dialog) и нескольких флагов, дающих подсказки о поведении окна. Поведение зависит от платформы.
По умолчанию это свойство не содержит флагов окна.
Окна являются панелями. Если вы установите флаг Qt::Window, флаг ItemIsPanel будет установлен автоматически. Если вы сбросите флаг Qt::Window, флаг ItemIsPanel также будет сброшен. Обратите внимание, что флаг ItemIsPanel может быть установлен независимо от Qt::Window.
Функции доступа:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags wFlags) |
См. также isWindow() и isPanel().
windowTitle : QString
Это свойство содержит заголовок окна (заголовок).
Это свойство используется только для окон.
По умолчанию, если заголовок не был установлен, это свойство содержит пустую строку.
Функции доступа:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &title) |
Документация по членам-функциям
QGraphicsWidget::QGraphicsWidget(QGraphicsItem *parent = Q_NULLPTR, Qt::WindowFlags wFlags = Qt::WindowFlags())
Создаёт экземпляр QGraphicsWidget. Необязательный аргумент parent передаётся конструктору QGraphicsItem. Необязательный аргумент wFlags задаёт флаги окна виджета (например, является ли виджет окном, инструментом, всплывающим окном и т. д.).
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.
QRectF QGraphicsWidget::boundingRect() const
Переопределена из QGraphicsItem::boundingRect().
void QGraphicsWidget::changeEvent(QEvent *event)
Этот обработчик событий может быть переопределён для обработки изменений состояния.
Состояние, изменяемое в этом событии, может быть получено через event.
События изменения включают: QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::ParentChange, QEvent::LayoutDirectionChange и QEvent::ContentsRectChange.
bool QGraphicsWidget::close()
Вызовите эту функцию для закрытия виджета.
Возвращает true если виджет был закрыт; в противном случае возвращает false. Этот слот сначала отправит событие QCloseEvent виджету, который может или не может принять это событие. Если событие было проигнорировано, ничего не происходит. Если событие было принято, виджет будет скрыт с помощью hide().
Если у виджета установлен атрибут Qt::WA_DeleteOnClose, он будет удалён.
[virtual protected] void QGraphicsWidget::closeEvent(QCloseEvent *event)
Этот обработчик событий для event может быть переопределён в подклассе для получения событий закрытия виджета. По умолчанию событие принимается.
См. также close() и QCloseEvent.
[virtual protected] bool QGraphicsWidget::event(QEvent *event)
Переопределено из QObject::event().
Обрабатывает событие event. QGraphicsWidget обрабатывает следующие события:
| Событие | Использование |
|---|---|
| Polish | Доставляется виджету некоторое время после его отображения. |
| GraphicsSceneMove | Доставляется виджету после изменения его локального положения. |
| GraphicsSceneResize | Доставляется виджету после изменения его размера. |
| Show | Доставляется виджету перед его отображением. |
| Hide | Доставляется виджету после его скрытия. |
| PaletteChange | Доставляется виджету после изменения его палитры. |
| FontChange | Доставляется виджету после изменения его шрифта. |
| EnabledChange | Доставляется виджету после изменения его состояния активности. |
| StyleChange | Доставляется виджету после изменения его стиля. |
| LayoutDirectionChange | Доставляется виджету после изменения его направления выравнивания. |
| ContentsRectChange | Доставляется виджету после изменения его отступов/области содержимого. |
[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().
[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.
[virtual] void QGraphicsWidget::getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Переопределено из QGraphicsLayoutItem::getContentsMargins().
Получает отступы содержимого виджета. Отступы хранятся в left, top, right и bottom в качестве указателей на qreal. Каждый аргумент может быть опущен, передав 0.
См. также setContentsMargins().
void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const
Получает отступы рамки окна виджета. Отступы хранятся в left, top, right и bottom как указатели на qreal. Каждый аргумент может быть опущен, передав 0.
См. также setWindowFrameMargins() и windowFrameRect().
[virtual protected] void QGraphicsWidget::grabKeyboardEvent(QEvent *event)
Этот обработчик событий для event может быть переопределён в подклассе для получения уведомлений о событиях QEvent::GrabKeyboard.
См. также grabKeyboard() и grabMouse().
[virtual protected] void QGraphicsWidget::grabMouseEvent(QEvent *event)
Этот обработчик событий для event может быть переопределён в подклассе для получения уведомлений о событиях QEvent::GrabMouse.
См. также grabMouse() и grabKeyboard().
int QGraphicsWidget::grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut)
Добавляет ярлык в систему ярлыков Qt, который отслеживает заданную последовательность клавиш sequence в заданном контексте context. Если context равен Qt::ApplicationShortcut, ярлык применяется ко всему приложению. В противном случае он либо локален для этого виджета (Qt::WidgetShortcut), либо для самого окна (Qt::WindowShortcut). Для виджетов, которые не являются частью окна (т.е. виджетов верхнего уровня и их потомков), ярлыки Qt::WindowShortcut применяются к сцене.
Если несколько виджетов захватили одну и ту же последовательность клавиш 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.
[virtual protected] void QGraphicsWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Переопределено из QGraphicsItem::hoverLeaveEvent().
[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 значение true, если окно данного виджета является активным окном, или если у виджета нет окна, но он находится в активной сцене (т.е., сцене, имеющей фокус).
Активное окно — это окно, которое либо содержит дочерний виджет, у которого в данный момент фокус, либо само имеет фокус.
См. также QGraphicsScene::activeWindow(), QGraphicsScene::setActiveWindow(), и isActive().
[virtual protected] QVariant QGraphicsWidget::itemChange(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.
[virtual] void QGraphicsWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR)
Переопределено из QGraphicsItem::paint().
[virtual] void QGraphicsWidget::paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_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().
[virtual protected] bool QGraphicsWidget::sceneEvent(QEvent *event)
Переопределено из QGraphicsItem::sceneEvent().
Реализация sceneEvent() в QGraphicsWidget просто передаёт event в QGraphicsWidget::event(). Вы можете обработать все события для вашего виджета в event() или в любой из удобных функций; вы не должны переопределять эту функцию в подклассе QGraphicsWidget.
См. также QGraphicsItem::sceneEvent().
void QGraphicsWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Если on имеет значение true, эта функция включает attribute; в противном случае attribute отключается.
См. документацию класса QGraphicsWidget для полного списка поддерживаемых атрибутов и их назначения.
См. также testAttribute() и QWidget::setAttribute().
void QGraphicsWidget::setContentsMargins(qreal left, qreal top, qreal right, qreal bottom)
Устанавливает отступы содержимого виджета слева, сверху, справа и снизу до значений left, top, right и bottom соответственно.
Отступы содержимого используются применённым макетом для определения размещения дочерних виджетов и макетов. Отступы особенно полезны для виджетов, которые ограничивают размещение дочерних виджетов только определённой частью собственной геометрии. Например, группа с макетом поместит дочерние виджеты внутри своей рамки, но ниже заголовка.
Изменение отступов содержимого виджета всегда вызывает update(), и любой применённый макет будет автоматически активирован. После этого виджет получит событие ContentsRectChange.
См. также getContentsMargins() и setGeometry().
void QGraphicsWidget::setGeometry(qreal x, qreal y, qreal w, qreal h)
Эта функция-удобство эквивалентна вызову setGeometry(QRectF( x, y, w, h)).
Примечание: Функция-сеттер для свойства geometry.
См. также geometry() и resize().
void QGraphicsWidget::setLayout(QGraphicsLayout *layout)
Устанавливает макет для данного виджета на layout. Любой существующий менеджер макета удаляется перед назначением нового макета. Если layout равен 0, виджет остаётся без макета. Геометрии существующих дочерних виджетов останутся без изменений.
Все виджеты, которые в данный момент управляются layout или любым его подмакетами, автоматически переназначаются этому элементу. Затем макет пересчитывается, а геометрии дочерних виджетов корректируются в соответствии с geometry() и contentsMargins() этого элемента. Дочерние элементы, которые не управляются явно layout, не подвергаются воздействию макета после его назначения данному виджету.
QGraphicsWidget принимает на себя владение layout.
Примечание: Функция-сеттер для свойства layout.
См. также layout(), QGraphicsLinearLayout::addItem() и QGraphicsLayout::invalidate().
void QGraphicsWidget::setShortcutAutoRepeat(int id, bool enabled = true)
Если enabled имеет значение true, автоповтор ярлыка с данным id включён; в противном случае он отключён.
Эта функция была добавлена в Qt 4.5.
См. также grabShortcut(), releaseShortcut() и QWidget::setShortcutAutoRepeat().
void QGraphicsWidget::setShortcutEnabled(int id, bool enabled = true)
Если enabled имеет значение true, ярлык с заданным id включён; в противном случае он отключён.
Предупреждение: Обычно вам не нужно использовать эту функцию, так как система ярлыков Qt автоматически включает/выключает их, когда виджеты скрываются/показываются и получают или теряют фокус. Лучше использовать QAction или QShortcut для работы с ярлыками, так как они проще в использовании, чем эта функция низкого уровня.
Эта функция была добавлена в Qt 4.5.
См. также grabShortcut(), releaseShortcut() и QWidget::setShortcutEnabled().
void QGraphicsWidget::setStyle(QStyle *style)
Устанавливает стиль виджета на style. QGraphicsWidget не принимает на себя владение style.
Если стиль не назначен или style равен 0, виджет будет использовать QGraphicsScene::style() (если это было установлено). В противном случае виджет будет использовать QApplication::style().
Эта функция устанавливает атрибут Qt::WA_SetStyle, если style не равен 0; в противном случае она очищает атрибут.
См. также style().
[static] void QGraphicsWidget::setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second)
Перемещает виджет second в порядке следования виджетов, получающих фокус, таким образом, чтобы при нажатии клавиши Tab фокус перемещался от виджета first к виджету second.
Обратите внимание, что поскольку порядок следования виджетов 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
[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.
[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().
[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().
[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.9/qgraphicswidget.html