Класс QGraphicsView
Класс QGraphicsView предоставляет виджет для отображения содержимого QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsView> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QAbstractScrollArea |
Публичные типы
| флаги | CacheMode |
| перечисление | CacheModeFlag { CacheNone, CacheBackground } |
| перечисление | DragMode { NoDrag, ScrollHandDrag, RubberBandDrag } |
| перечисление | OptimizationFlag { DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting } |
| флаги | OptimizationFlags |
| перечисление | ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse } |
| перечисление | ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate } |
Свойства
|
|
Открытые функции
| QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr) | |
| QGraphicsView(QWidget *parent = nullptr) | |
| virtual | ~QGraphicsView() |
| Qt::Alignment | alignment() const |
| QBrush | backgroundBrush() const |
| QGraphicsView::CacheMode | cacheMode() const |
| void | centerOn(const QPointF &pos) |
| void | centerOn(qreal x, qreal y) |
| void | centerOn(const QGraphicsItem *item) |
| QGraphicsView::DragMode | dragMode() const |
| void | ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50) |
| void | fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| QBrush | foregroundBrush() const |
| bool | isInteractive() const |
| bool | isTransformed() const |
| QGraphicsItem * | itemAt(const QPoint &pos) const |
| QGraphicsItem * | itemAt(int x, int y) const |
| QList<QGraphicsItem *> | items() const |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
| void | setDragMode(QGraphicsView::DragMode mode) |
| void | setForegroundBrush(const QBrush &brush) |
| void | setInteractive(bool allowed) |
| void | setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true) |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
| void | setRenderHint(QPainter::RenderHint hint, bool enabled = true) |
| void | setRenderHints(QPainter::RenderHints hints) |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
| void | setScene(QGraphicsScene *scene) |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
| void | setTransform(const QTransform &matrix, bool combine = false) |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
| void | shear(qreal sh, qreal sv) |
| QTransform | transform() const |
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | translate(qreal dx, qreal dy) |
| QTransform | viewportTransform() const |
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
Реализованные общедоступные функции
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const override |
| virtual QSize | sizeHint() const override |
Общедоступные слоты
| void | invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers) |
| void | updateScene(const QList<QRectF> &rects) |
| void | updateSceneRect(const QRectF &rect) |
Сигналы
| void | rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint) |
Защищенные функции
| virtual void | drawBackground(QPainter *painter, const QRectF &rect) |
| virtual void | drawForeground(QPainter *painter, const QRectF &rect) |
Реализованные защищенные функции
| виртуальный void | contextMenuEvent(QContextMenuEvent *event) override |
| виртуальный void | dragEnterEvent(QDragEnterEvent *event) override |
| виртуальный void | dragLeaveEvent(QDragLeaveEvent *event) override |
| виртуальный void | dragMoveEvent(QDragMoveEvent *event) override |
| виртуальный void | dropEvent(QDropEvent *event) override |
| виртуальный bool | event(QEvent *event) override |
| виртуальный void | focusInEvent(QFocusEvent *event) override |
| виртуальный bool | focusNextPrevChild(bool next) override |
| виртуальный void | focusOutEvent(QFocusEvent *event) override |
| виртуальный void | inputMethodEvent(QInputMethodEvent *event) override |
| виртуальный void | keyPressEvent(QKeyEvent *event) override |
| виртуальный void | keyReleaseEvent(QKeyEvent *event) override |
| виртуальный void | mouseDoubleClickEvent(QMouseEvent *event) override |
| виртуальный void | mouseMoveEvent(QMouseEvent *event) override |
| виртуальный void | mousePressEvent(QMouseEvent *event) override |
| виртуальный void | mouseReleaseEvent(QMouseEvent *event) override |
| виртуальный void | paintEvent(QPaintEvent *event) override |
| виртуальный void | resizeEvent(QResizeEvent *event) override |
| виртуальный void | scrollContentsBy(int dx, int dy) override |
| виртуальный void | showEvent(QShowEvent *event) override |
| виртуальный bool | viewportEvent(QEvent *event) override |
| виртуальный void | wheelEvent(QWheelEvent *event) override |
Защищенные слоты
| виртуальный void | setupViewport(QWidget *widget) override |
Подробное описание
QGraphicsView визуализирует содержимое QGraphicsScene в прокручиваемом области просмотра. Для создания сцены с геометрическими элементами см. документацию QGraphicsScene. QGraphicsView входит в состав Graphics View Framework.
Чтобы визуализировать сцену, начните с создания объекта QGraphicsView, передавая адрес сцены, которую вы хотите визуализировать, конструктору QGraphicsView. В качестве альтернативы вы можете вызвать setScene(), чтобы установить сцену в более поздний момент. После вызова show() просмотр по умолчанию прокручивается к центру сцены и отображает любые элементы, видимые в данный момент. Например:
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show(); Вы можете явно прокрутить до любой точки сцены, используя полосы прокрутки или вызывая centerOn(). Передавая точку в centerOn(), QGraphicsView прокрутит область просмотра, чтобы убедиться, что точка расположена в центре просмотра. Предоставляется перегрузка для прокрутки до QGraphicsItem, в этом случае QGraphicsView позаботится о том, чтобы центр элемента был в центре просмотра. Если все, что вам нужно, это убедиться, что определенная область видна (но не обязательно центрирована), вы можете вызвать ensureVisible() вместо этого.
QGraphicsView можно использовать для визуализации всей сцены или только частей её. Визуализируемая область по умолчанию определяется автоматически при первом отображении просмотра (вызывая QGraphicsScene::itemsBoundingRect()). Чтобы установить визуализируемый прямоугольник области самостоятельно, вы можете вызвать setSceneRect(). Это соответствующим образом скорректирует диапазоны полос прокрутки. Обратите внимание, что хотя сцена поддерживает практически неограниченный размер, диапазон полос прокрутки никогда не превысит диапазон целого числа (INT_MIN, INT_MAX).
QGraphicsView визуализирует сцену, вызывая render(). По умолчанию элементы рисуются в область просмотра с помощью обычного QPainter и с использованием стандартных параметров отрисовки. Чтобы изменить стандартные параметры отрисовки, которые QGraphicsView передает QPainter при рисовании элементов, вы можете вызвать setRenderHints().
По умолчанию QGraphicsView предоставляет стандартный QWidget для области просмотра. Вы можете получить доступ к этому виджету, вызвав viewport(), или вы можете заменить его, вызвав setViewport(). Чтобы выполнить отрисовку с помощью OpenGL, просто вызовите setViewport(new QOpenGLWidget). QGraphicsView получает в собственность виджет области просмотра.
QGraphicsView поддерживает аффинные преобразования, используя QTransform. Вы можете либо передать матрицу в setTransform(), либо вызвать одну из функций для удобства rotate(), scale(), translate() или shear(). Два наиболее распространенных преобразования — масштабирование (используется для масштабирования) и вращение. QGraphicsView сохраняет центр просмотра неизменным во время преобразования. Из-за выравнивания сцены (setAligment()) перемещение просмотра не будет иметь визуального эффекта.
Вы можете взаимодействовать с элементами сцены с помощью мыши и клавиатуры. QGraphicsView преобразует события мыши и клавиатуры в события сцены (события, наследующие QGraphicsSceneEvent) и передает их визуализируемой сцене. В конечном итоге именно отдельный элемент обрабатывает события и реагирует на них. Например, если вы щелкаете по выбираемому элементу, элемент обычно сообщает сцене, что он был выбран, и также перерисовывает себя, чтобы отобразить прямоугольник выделения. Аналогично, если вы щелкаете и перетаскиваете мышь, чтобы переместить перемещаемый элемент, элемент обрабатывает движения мыши и перемещает себя. Взаимодействие с элементами включено по умолчанию, и вы можете отключить его, вызвав setInteractive().
Вы также можете предоставить собственное пользовательское взаимодействие со сценой, создав подкласс QGraphicsView и переопределив обработчики событий мыши и клавиатуры. Чтобы упростить программирование взаимодействия с элементами в представлении, QGraphicsView предоставляет функции сопоставления mapToScene() и mapFromScene(), а также вспомогательные средства доступа к элементам items() и itemAt(). Эти функции позволяют отображать точки, прямоугольники, многоугольники и пути между координатами представления и координатами сцены, а также находить элементы на сцене с использованием координат представления.
Примечание: Использование области просмотра OpenGL ограничивает возможность использования QGraphicsProxyWidget. Не все сочетания виджетов и стилей могут быть поддержаны с такой настройкой. Вы должны тщательно протестировать свой пользовательский интерфейс и внести необходимые коррективы.
См. также QGraphicsScene, QGraphicsItem и QGraphicsSceneEvent.
Документация по типам членов
перечисление QGraphicsView::CacheModeFlagфлаги QGraphicsView::CacheMode
Это перечисление описывает флаги, которые можно установить для режима кэширования QGraphicsView.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::CacheNone |
0x0 |
Вся отрисовка выполняется непосредственно в области просмотра. |
QGraphicsView::CacheBackground |
0x1 |
Фон кэшируется. Это влияет как на пользовательские фоны, так и на фоны, основанные на свойстве backgroundBrush. Когда этот флаг включён, QGraphicsView выделит одну растровое изображение с полным размером области просмотра. |
Тип CacheMode — это typedef для QFlags<CacheModeFlag>. Он хранит логическое ИЛИ комбинацию значений CacheModeFlag.
См. также cacheMode.
перечисление QGraphicsView::DragMode
Это перечисление описывает стандартное действие для представления при нажатии и перетаскивании мыши по области просмотра.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::NoDrag |
0 |
Ничего не происходит; событие мыши игнорируется. |
QGraphicsView::ScrollHandDrag |
1 |
Курсор меняется на указатель руки, и перетаскивание мыши будет прокручивать полосы прокрутки. Этот режим работает как в режиме interactive, так и в неинтерактивном режиме. |
QGraphicsView::RubberBandDrag |
2 |
Появится резиновый прямоугольник. Перетаскивание мыши задаст геометрию резинового прямоугольника, и все элементы, попадающие в этот прямоугольник, будут выбраны. Этот режим отключен для неинтерактивных представлений. |
См. также dragMode и QGraphicsScene::setSelectionArea().
перечисление QGraphicsView::OptimizationFlagфлаги QGraphicsView::OptimizationFlags
Это перечисление описывает флаги, которые можно включить для повышения производительности отрисовки в QGraphicsView. По умолчанию ни один из этих флагов не установлен. Обратите внимание, что установка флага обычно влечёт за собой побочный эффект, и этот эффект может отличаться в зависимости от устройства отрисовки и платформы.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::DontSavePainterState |
0x1 |
При отрисовке QGraphicsView защищает состояние художника (см. QPainter::save()) при отрисовке фона или переднего плана, а также при отрисовке каждого элемента. Это позволяет вам оставить художника в изменённом состоянии (т.е., вы можете вызвать QPainter::setPen() или QPainter::setBrush() без восстановления состояния после отрисовки). Однако, если элементы постоянно восстанавливают состояние, вам следует включить этот флаг, чтобы предотвратить QGraphicsView от выполнения того же. |
QGraphicsView::DontAdjustForAntialiasing |
0x2 |
Отключает автоматическую настройку антиалиасинга QGraphicsView для открытых областей. Элементы, которые рисуют линии с антиалиасингом на границах их QGraphicsItem::boundingRect(), могут рисовать части линии за пределами области. Чтобы предотвратить артефакты отрисовки, QGraphicsView расширяет все видимые области на 2 пикселя во всех направлениях. Если вы включите этот флаг, QGraphicsView больше не будет выполнять эти корректировки, минимизируя области, требующие перерисовки, что повышает производительность. Типичным побочным эффектом является то, что элементы, которые рисуют с антиалиасингом, могут оставлять следы рисования на сцене при перемещении. |
QGraphicsView::IndirectPainting |
0x4 |
С Qt 4.6 восстанавливается старый алгоритм отрисовки, который вызывает QGraphicsView::drawItems() и QGraphicsScene::drawItems(). Используется только для совместимости со старым кодом. |
Тип OptimizationFlags — это typedef для QFlags<OptimizationFlag>. Он хранит логическое ИЛИ комбинацию значений OptimizationFlag.
перечисление QGraphicsView::ViewportAnchor
Это перечисление описывает возможные якорные точки, которые QGraphicsView может использовать при изменении размера представления пользователем или при трансформации представления.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::NoAnchor |
0 |
Без якорной точки, т.е. представление оставляет позицию сцены неизменной. |
QGraphicsView::AnchorViewCenter |
1 |
Точка сцены в центре представления используется в качестве якорной точки. |
QGraphicsView::AnchorUnderMouse |
2 |
Точка под курсором используется в качестве якорной точки. |
См. также resizeAnchor и transformationAnchor.
перечисление QGraphicsView::ViewportUpdateMode
Это перечисление описывает, как QGraphicsView обновляет свою область просмотра при изменении или открытии содержимого сцены.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::FullViewportUpdate |
0 |
При изменении или повторном открытии любой видимой части сцены QGraphicsView обновит всю область просмотра. Этот подход наиболее быстрый, когда QGraphicsView тратит больше времени на определение того, что отрисовать, чем на саму отрисовку (например, когда множество мелких элементов регулярно обновляются). Этот режим обновления предпочтительнее для областей просмотра, которые не поддерживают частичные обновления, таких как QOpenGLWidget, и для областей просмотра, которые нуждаются в отключении оптимизации прокрутки. |
QGraphicsView::MinimalViewportUpdate |
1 |
QGraphicsView определит минимальную область области просмотра, требующую перерисовки, минимизируя время, затрачиваемое на отрисовку, избегая перерисовки областей, которые не изменились. Это стандартный режим QGraphicsView. Хотя этот подход обеспечивает наилучшую производительность в целом, если на сцене много мелких видимых изменений, QGraphicsView может тратить больше времени на поиск минимального подхода, чем на саму отрисовку. |
QGraphicsView::SmartViewportUpdate |
2 |
QGraphicsView попытается найти оптимальный режим обновления, проанализировав области, требующие перерисовки. |
QGraphicsView::BoundingRectViewportUpdate |
4 |
Будет перерисован прямоугольник, окружающий все изменения в области просмотра. Преимущество этого режима состоит в том, что QGraphicsView ищет изменения только в одной области, минимизируя время, затрачиваемое на определение того, что нуждается в перерисовке. Недостаток заключается в том, что также нужно перерисовать и области, которые не изменились. |
QGraphicsView::NoViewportUpdate |
3 |
QGraphicsView никогда не будет обновлять свою область просмотра при изменении сцены; ожидается, что пользователь будет контролировать все обновления. Этот режим отключает все (потенциально медленные) проверки видимости элементов в QGraphicsView и подходит для сцен, которые либо требуют фиксированной частоты кадров, либо для случаев, когда область просмотра обновляется внешним образом. |
См. также viewportUpdateMode.
Документация по свойствам
alignment : Qt::Alignment
Это свойство содержит выравнивание сцены в представлении, когда вся сцена видима.
Если вся сцена видна в представлении (т.е. полосы прокрутки не видны), выравнивание представления определит, где сцена будет отображаться в представлении. Например, если выравнивание равно Qt::AlignCenter (по умолчанию), сцена будет центрирована в представлении, а если выравнивание равно (Qt::AlignLeft | Qt::AlignTop), сцена будет отображена в левом верхнем углу представления.
Функции доступа:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment alignment) |
backgroundBrush : QBrush
Это свойство содержит кисть фона сцены.
Это свойство задает кисть фона сцены в этом представлении. Оно используется для переопределения собственного фона сцены и определяет поведение drawBackground(). Чтобы обеспечить пользовательское отображение фона для этого представления, можно переопределить drawBackground() вместо этого.
По умолчанию это свойство содержит кисть с шаблоном Qt::NoBrush.
Функции доступа:
| QBrush | backgroundBrush() const |
| void | setBackgroundBrush(const QBrush &brush) |
См. также QGraphicsScene::backgroundBrush и foregroundBrush.
cacheMode : CacheMode
Это свойство определяет, какие части представления кешируются.
QGraphicsView может кешировать предварительно рендеренный контент в QPixmap, который затем отображается на области просмотра. Целью такого кэширования является ускорение общего времени рендеринга для областей, которые медленно рендерятся. Текстуры, градиенты и фоны с альфа-смешиванием, например, могут рендериться заметно медленно, особенно с трансформированным представлением. Флаг CacheBackground позволяет кешировать фон представления. Например:
QGraphicsView view;
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"));
view.setCacheMode(QGraphicsView::CacheBackground); Кэш инвалидируется каждый раз, когда представление трансформируется. Однако при прокрутке требуется только частичная инвалидация.
По умолчанию ничего не кэшируется.
Функции доступа:
| QGraphicsView::CacheMode | cacheMode() const |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
См. также resetCachedContent() и QPixmapCache.
dragMode : DragMode
Это свойство определяет поведение при перетаскивании мыши по сцене, когда нажата левая кнопка мыши.
Это свойство определяет, что должно произойти, когда пользователь нажимает на фон сцены и перетаскивает мышь (например, прокручивание содержимого области просмотра с помощью курсора руки или выделение нескольких элементов с помощью эллипса). Значение по умолчанию, NoDrag, ничего не делает.
Это поведение затрагивает только щелчки мыши, которые не обрабатываются ни одним элементом. Можно определить пользовательское поведение, создав подкласс QGraphicsView и переопределив mouseMoveEvent().
Функции доступа:
| QGraphicsView::DragMode | dragMode() const |
| void | setDragMode(QGraphicsView::DragMode mode) |
foregroundBrush : QBrush
Это свойство содержит кисть переднего плана сцены.
Это свойство устанавливает кисть переднего плана сцены в этом представлении. Оно используется для переопределения собственного переднего плана сцены и определяет поведение drawForeground(). Чтобы обеспечить пользовательское отображение переднего плана для этого представления, можно переопределить drawForeground() вместо этого.
По умолчанию это свойство содержит кисть с шаблоном Qt::NoBrush.
Функции доступа:
| QBrush | foregroundBrush() const |
| void | setForegroundBrush(const QBrush &brush) |
См. также QGraphicsScene::foregroundBrush и backgroundBrush.
interactive : bool
Это свойство определяет, разрешена ли интеракция со сценой в представлении.
Если включено, это представление настроено для разрешения взаимодействия со сценой. В противном случае это представление не позволит взаимодействие, и любые события мыши или клавиатуры игнорируются (т.е. оно будет действовать как представление только для чтения).
По умолчанию это свойство равно true.
Функции доступа:
| bool | isInteractive() const |
| void | setInteractive(bool allowed) |
optimizationFlags : OptimizationFlags
Флаги, которые могут использоваться для настройки производительности QGraphicsView.
QGraphicsView использует обрезку, дополнительные корректировки прямоугольника границы и другие вспомогательные средства для повышения качества рендеринга и производительности для типичного случая графической сцены. Однако, в зависимости от целевой платформы, сцены и используемой области просмотра, некоторые из этих операций могут ухудшить производительность.
Эффект варьируется в зависимости от флага; см. документацию по OptimizationFlags для получения подробностей.
По умолчанию оптимизационные флаги не включены.
Функции доступа:
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
См. также setOptimizationFlag().
renderHints : QPainter::RenderHints
Это свойство содержит стандартные параметры рендеринга для представления.
Эти параметры используются для инициализации QPainter перед отображением каждого видимого элемента. QPainter использует параметры рендеринга для включения таких функций рендеринга, как сглаживание и плавное преобразование растровых изображений.
QPainter::TextAntialiasing включено по умолчанию.
Пример:
QGraphicsScene scene; scene.addRect(QRectF(-10, -10, 20, 20)); QGraphicsView view(&scene); view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); view.show();
Функции доступа:
| QPainter::RenderHints | renderHints() const |
| void | setRenderHints(QPainter::RenderHints hints) |
resizeAnchor : ViewportAnchor
как представление должно позиционировать сцену при изменении размера представления.
QGraphicsView использует это свойство, чтобы определить, как позиционировать сцену в области просмотра, когда изменяется размер виджета области просмотра. Поведение по умолчанию, NoAnchor, оставляет позицию сцены неизменной при изменении размера; левый верхний угол представления будет казаться закрепленным во время изменения размера.
Обратите внимание, что эффект этого свойства заметен, когда видна только часть сцены (т.е. когда есть полосы прокрутки). В противном случае, если вся сцена помещается в представление, QGraphicsScene использует выравнивание представления alignment, чтобы расположить сцену в представлении.
Функции доступа:
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
См. также alignment и transformationAnchor.
rubberBandSelectionMode : Qt::ItemSelectionMode
Это свойство определяет поведение для выделения элементов с помощью прямоугольника выделения.
Это свойство определяет, как элементы выделяются при использовании режима перетаскивания RubberBandDrag.
Значение по умолчанию — Qt::IntersectsItemShape; все элементы, чья форма пересекается или содержится внутри резиновой полосы, выбираются.
Функции доступа:
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
См. также dragMode, items() и rubberBandRect().
sceneRect : QRectF
Это свойство содержит область сцены, отображаемую в этом представлении.
Прямоугольник сцены определяет границы сцены, и в данном случае это означает область сцены, по которой можно перемещаться с помощью полос прокрутки.
Если свойство не задано или ему присвоено значение null QRectF, это свойство имеет то же значение, что и QGraphicsScene::sceneRect, и изменяется вместе с QGraphicsScene::sceneRect. В противном случае прямоугольник сцены представления не зависит от сцены.
Обратите внимание, что хотя сцена поддерживает практически неограниченные размеры, диапазон полос прокрутки никогда не превысит диапазон целых чисел (INT_MIN, INT_MAX). Когда сцена больше, чем значения полос прокрутки, вы можете выбрать использование translate() для навигации по сцене.
По умолчанию это свойство содержит прямоугольник в начале координат с нулевой шириной и высотой.
Функции доступа:
| QRectF | sceneRect() const |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
См. также QGraphicsScene::sceneRect.
transformationAnchor : ViewportAnchor
как представление должно позиционировать сцену во время преобразований.
QGraphicsView использует это свойство для определения способа позиционирования сцены в области просмотра при изменении матрицы преобразования и преобразовании системы координат представления. Поведение по умолчанию, AnchorViewCenter, гарантирует, что точка сцены в центре представления остается неизменной во время преобразований (например, при повороте сцена будет вращаться вокруг центра представления).
Обратите внимание, что эффект этого свойства заметен, когда видна только часть сцены (т. е. когда есть полосы прокрутки). В противном случае, если вся сцена помещается в представление, QGraphicsScene использует выравнивание представления alignment для позиционирования сцены в представлении.
Функции доступа:
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
См. также alignment и resizeAnchor.
viewportUpdateMode : ViewportUpdateMode
как область просмотра должна обновлять свои содержимое.
QGraphicsView использует это свойство для определения способа обновления областей сцены, которые были повторно отображены или изменены. Обычно вам не нужно изменять это свойство, но есть некоторые случаи, когда это может улучшить производительность отрисовки. См. документацию ViewportUpdateMode для получения подробной информации.
Значение по умолчанию — MinimalViewportUpdate, где QGraphicsView будет обновлять как можно меньшую область области просмотра при изменении содержимого.
Функции доступа:
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
См. также ViewportUpdateMode и cacheMode.
Документация функций-членов
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
Конструирует QGraphicsView и устанавливает отображаемую сцену на scene. parent передается конструктору QWidget.
QGraphicsView::QGraphicsView(QWidget *parent = nullptr)
Конструирует QGraphicsView. parent передается конструктору QWidget.
[slot] void QGraphicsView::invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)
Делает недействительным и планирует перерисовку layers внутри rect. rect задаётся в координатах сцены. Любое кэшированное содержимое для layers внутри rect безусловно делается недействительным и перерисовывается.
Вы можете вызвать эту функцию, чтобы уведомить QGraphicsView о изменениях в фоновом или переднем плане сцены. Она часто используется для сцен с фоном на основе плиток, чтобы уведомить о изменениях, когда QGraphicsView включил кэширование фона.
Обратите внимание, что QGraphicsView в настоящее время поддерживает кэширование только фона (см. QGraphicsView::CacheBackground). Эта функция эквивалентна вызову update() если передаётся любой слой, кроме QGraphicsScene::BackgroundLayer.
См. также QGraphicsScene::invalidate() и update().
[signal, since 5.1] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
Этот сигнал излучается при изменении прямоугольника резиновой полосы. Прямоугольник области просмотра задаётся параметром rubberBandRect. Начальная и конечная точки перетаскивания задаются в координатах сцены с помощью fromScenePoint и toScenePoint.
При завершении выбора резиновой полосы этот сигнал будет излучен с нулевыми значениями.
Эта функция была добавлена в Qt 5.1.
См. также rubberBandRect().
[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)
Переопределяет: QAbstractScrollArea::setupViewport(QWidget *viewport).
Этот слот вызывается QAbstractScrollArea после того, как был вызван setViewport(). Переопределите эту функцию в подклассе QGraphicsView, чтобы инициализировать новый элемент просмотра widget перед его использованием.
См. также setViewport().
[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)
Планирует обновление прямоугольников сцены rects.
См. также QGraphicsScene::changed().
[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)
Уведомляет QGraphicsView о том, что прямоугольник сцены сцены изменился. rect — новый прямоугольник сцены. Если в представлении уже задан явным образом прямоугольник сцены, эта функция ничего не делает.
См. также sceneRect и QGraphicsScene::sceneRectChanged().
[virtual] QGraphicsView::~QGraphicsView()
Деструктор объекта QGraphicsView.
void QGraphicsView::centerOn(const QPointF &pos)
Прокручивает содержимое области просмотра так, чтобы координаты сцены pos были центрированы в представлении.
Поскольку pos — это координата с плавающей точкой, а полосы прокрутки работают с целочисленными координатами, центрирование является только приблизительным.
Примечание: Если элемент находится близко к границе или за ней, он будет виден в представлении, но не центрирован.
См. также ensureVisible().
void QGraphicsView::centerOn(qreal x, qreal y)
Это перегруженная функция.
Эта функция предоставляется для удобства. Она эквивалентна вызову centerOn(QPointF(x, y)).
void QGraphicsView::centerOn(const QGraphicsItem *item)
Это перегруженная функция.
Прокручивает содержимое области просмотра так, чтобы item был центрирован в представлении.
См. также ensureVisible().
[override virtual protected] void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)
Переопределяет: QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).
[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)
Переопределяет: QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event).
[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
Переопределяет: QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event).
[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
Переопределяет: QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event).
[virtual protected] void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
Отображает фоновый фон сцены с помощью painter перед отображением элементов и переднего плана. Переопределите эту функцию, чтобы обеспечить пользовательский фон для этого представления.
Если вам нужно только определить цвет, текстуру или градиент для фона, вы можете вызвать setBackgroundBrush() вместо этого.
Все операции рисования выполняются в координатах сцены. rect — это видимая прямоугольная область.
По умолчанию функция заполняет rect с помощью backgroundBrush представления. Если такая кисть не определена (по умолчанию), вместо этого вызывается функция drawBackground() сцены.
См. также drawForeground() и QGraphicsScene::drawBackground().
[virtual protected] void QGraphicsView::drawForeground(QPainter *painter, const QRectF &rect)
Отображает переднее фоновое изображение сцены с помощью painter после отображения фона и всех элементов. Переопределите эту функцию, чтобы обеспечить пользовательский передний план для этого представления.
Если вам нужно только определить цвет, текстуру или градиент для переднего плана, вы можете вызвать setForegroundBrush() вместо этого.
Все операции рисования выполняются в координатах сцены. rect — это видимая прямоугольная область.
По умолчанию функция заполняет rect с помощью foregroundBrush представления. Если такая кисть не определена (по умолчанию), вместо этого вызывается функция drawForeground() сцены.
См. также drawBackground() и QGraphicsScene::drawForeground().
[override virtual protected] void QGraphicsView::dropEvent(QDropEvent *event)
Переопределяет: QAbstractScrollArea::dropEvent(QDropEvent *event).
void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
Прокручивает содержимое области просмотра так, чтобы прямоугольник сцены rect был виден с отступами, указанными в пикселях xmargin и ymargin. Если заданный прямоугольник недостижим, содержимое прокручивается до ближайшей допустимой позиции. Значение по умолчанию для обоих отступов составляет 50 пикселей.
См. также centerOn().
void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
Это перегруженная функция.
Эта функция предоставляется для удобства. Она эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
Это перегруженная функция.
Прокручивает содержимое области просмотра так, чтобы центр элемента item был виден с отступами, заданными в пикселях xmargin и ymargin. Если заданную точку невозможно достичь, содержимое прокручивается до ближайшей допустимой позиции. Значение по умолчанию для обоих отступов составляет 50 пикселей.
См. также centerOn().
[override virtual protected] bool QGraphicsView::event(QEvent *event)
Переопределяет: QAbstractScrollArea::event(QEvent *event).
void QGraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Масштабирует матрицу представления и прокручивает полосы прокрутки, чтобы обеспечить, что прямоугольник сцены rect помещается в область просмотра. rect должен находиться внутри прямоугольника сцены; в противном случае fitInView() не может гарантировать, что весь прямоугольник виден.
Эта функция сохраняет поворот, перемещение или сдвиг представления. Представление масштабируется в соответствии с aspectRatioMode. Если rect не помещается плотно, он центрируется в представлении.
Обычно fitInView() вызывается из внутри переопределения resizeEvent(), чтобы обеспечить автоматическое масштабирование всей сцены или ее частей для соответствия новому размеру области просмотра при изменении размера представления. Однако следует учитывать, что вызов fitInView() изнутри resizeEvent() может привести к нежелательной рекурсии изменения размера, если новое преобразование включает/выключает автоматическое состояние полос прокрутки. Вы можете переключить политики полос прокрутки на всегда включенные или всегда выключенные, чтобы предотвратить это (см. horizontalScrollBarPolicy() и verticalScrollBarPolicy()).
Если rect пустой или область просмотра слишком маленькая, эта функция ничего не делает.
См. также setTransform(), ensureVisible() и centerOn().
void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Это перегруженная функция.
Эта функция для удобства эквивалентна вызову fitInView(QRectF(x, y, w, h), aspectRatioMode).
См. также ensureVisible() и centerOn().
void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Это перегруженная функция.
Обеспечивает, чтобы item плотно вписывался в представление, масштабируя представление в соответствии с aspectRatioMode.
См. также ensureVisible() и centerOn().
[override virtual protected] void QGraphicsView::focusInEvent(QFocusEvent *event)
Переопределяет: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)
Переопределяет: QWidget::focusNextPrevChild(bool next).
[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)
Переопределяет: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
Переопределяет: QWidget::inputMethodEvent(QInputMethodEvent *event).
[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
Reimplements: QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.
bool QGraphicsView::isTransformed() const
Возвращает true , если вид преобразован (т.е., присвоено преобразование, отличное от тождественного, или откорректированы полосы прокрутки).
См. также setTransform(), horizontalScrollBar(), и verticalScrollBar().
QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const
Возвращает элемент по позиции pos, которая задана в координатах области просмотра. Если в этой позиции находится несколько элементов, функция возвращает самый верхний.
Пример:
void CustomView::mousePressEvent(QMouseEvent *event)
{
if (QGraphicsItem *item = itemAt(event->pos())) {
qDebug() << "You clicked on item" << item;
} else {
qDebug("You didn't click on an item.");
}
} См. также items() и Сортировка.
QGraphicsItem *QGraphicsView::itemAt(int x, int y) const
Это перегруженная функция.
Эта функция предоставлена для удобства. Она эквивалентна вызову itemAt(QPoint(x, y)).
QList<QGraphicsItem *> QGraphicsView::items() const
Возвращает список всех элементов в связанной сцене в порядке убывания стека (т. е. первый элемент в возвращаемом списке — это самый верхний элемент).
См. также QGraphicsScene::items() и Сортировка.
QList<QGraphicsItem *> QGraphicsView::items(const QPoint &pos) const
Возвращает список всех элементов в позиции pos в представлении. Элементы перечислены в порядке убывания стека (т. е. первый элемент в списке — самый верхний, а последний — самый нижний). pos задана в координатах области просмотра.
Эта функция чаще всего вызывается из обработчиков событий мыши в подклассе в QGraphicsView. pos задана в не преобразованных координатах области просмотра, как и в QMouseEvent::pos().
void CustomView::mousePressEvent(QMouseEvent *event)
{
qDebug() << "There are" << items(event->pos()).size()
<< "items at position" << mapToScene(event->pos());
} См. также QGraphicsScene::items() и Сортировка.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const
Эта функция предоставлена для удобства. Она эквивалентна вызову items(QPoint(x, y)).
QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от mode, либо содержатся в, либо пересекаются с rect. rect задана в координатах области просмотра.
Значение по умолчанию для mode — Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается или содержится в rect.
Элементы отсортированы в порядке убывания стека (т. е. первый элемент в возвращаемом списке — самый верхний).
См. также itemAt(), items(), mapToScene(), и Сортировка.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Эта функция для удобства эквивалентна вызову items(QRectF(x, y, w, h), mode).
QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от mode, либо содержатся в, либо пересекаются с polygon. polygon задана в координатах области просмотра.
Значение по умолчанию для mode — Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается или содержится в polygon.
Элементы отсортированы в порядке убывания стека (т. е. первый элемент в возвращаемом списке — самый верхний).
См. также itemAt(), items(), mapToScene(), и Сортировка.
QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от mode, либо содержатся в, либо пересекаются с path. path задана в координатах области просмотра.
Значение по умолчанию для mode — Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается или содержится в path.
См. также itemAt(), items(), mapToScene(), и Сортировка.
[override virtual protected] void QGraphicsView::keyPressEvent(QKeyEvent *event)
Reimplements: QAbstractScrollArea::keyPressEvent(QKeyEvent *e).
[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
Reimplements: QWidget::keyReleaseEvent(QKeyEvent *event).
QPoint QGraphicsView::mapFromScene(const QPointF &point) const
Возвращает сценную координату point в координатах области просмотра.
См. также mapToScene().
QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const
Возвращает прямоугольник сцены rect в полигоне координат области просмотра.
См. также mapToScene().
QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
Возвращает полигон сцены polygon в полигоне координат области просмотра.
См. также mapToScene().
QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const
Возвращает траекторию сцены path в траектории координат области просмотра.
См. также mapToScene().
QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const
Эта функция предоставлена для удобства. Она эквивалентна вызову mapFromScene(QPointF(x, y)).
QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
Эта функция предоставлена для удобства. Она эквивалентна вызову mapFromScene(QRectF(x, y, w, h)).
QPointF QGraphicsView::mapToScene(const QPoint &point) const
Возвращает координату области просмотра point, преобразованную в координаты сцены.
Примечание: может быть полезно отобразить весь прямоугольник, покрытый пикселем в point, вместо самой точки. Для этого можно вызвать mapToScene(QRect(point, QSize(2, 2))).
См. также mapFromScene().
QPolygonF QGraphicsView::mapToScene(const QRect &rect) const
Возвращает прямоугольник области просмотра rect, преобразованный в координаты сцены.
См. также mapFromScene().
QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
Возвращает многоугольник области просмотра polygon, преобразованный в координаты сцены.
См. также mapFromScene().
QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const
Возвращает путь отрисовки области просмотра path, преобразованный в координаты сцены.
См. также mapFromScene().
QPointF QGraphicsView::mapToScene(int x, int y) const
Эта функция предоставлена для удобства. Она эквивалентна вызову mapToScene(QPoint(x, y)).
QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const
Эта функция предоставлена для удобства. Она эквивалентна вызову mapToScene(QRect(x, y, w, h)).
[override virtual protected] void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)
Переопределяет: QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e).
[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
Переопределяет: QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e).
[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)
Переопределяет: QAbstractScrollArea::mousePressEvent(QMouseEvent *e).
[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
Переопределяет: QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).
[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)
Переопределяет: QAbstractScrollArea::paintEvent(QPaintEvent *event).
void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
Отображает прямоугольник source, который задан в координатах представления, из сцены в target, заданный в координатах устройства отрисовки, используя painter. Эта функция полезна для захвата содержимого представления на устройстве отрисовки, таком как QImage (например, для создания скриншота) или для печати на QPrinter. Например:
QGraphicsScene scene;
scene.addItem(...
...
QGraphicsView view(&scene);
view.show();
...
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPainter painter(&printer);
// print, fitting the viewport contents into a full page
view.render(&painter);
// print the upper half of the viewport into the lower.
// half of the page.
QRect viewport = view.viewport()->rect();
view.render(&painter,
QRectF(0, printer.height() / 2,
printer.width(), printer.height() / 2),
viewport.adjusted(0, 0, 0, -viewport.height() / 2)); Если source является пустым прямоугольником, эта функция будет использовать viewport()->rect() для определения того, что отобразить. Если target является пустым прямоугольником, будут использоваться полные размеры устройства отрисовки painter (например, размер страницы для QPrinter).
Содержимое прямоугольника source будет преобразовываться в соответствии с aspectRatioMode для соответствия прямоугольнику target. По умолчанию сохраняется соотношение сторон, и source масштабируется для соответствия target.
См. также QGraphicsScene::render().
void QGraphicsView::resetCachedContent()
Сбрасывает все кэшированные данные. Вызов этой функции очистит кэш QGraphicsView. Если текущий режим кэширования — CacheNone, эта функция ничего не делает.
Эта функция вызывается автоматически, когда изменяются свойства backgroundBrush или QGraphicsScene::backgroundBrush. Вам необходимо вызвать эту функцию только в том случае, если вы переопределили QGraphicsScene::drawBackground() или QGraphicsView::drawBackground() для рисования пользовательского фона и требуется полная перерисовка.
См. также cacheMode().
void QGraphicsView::resetTransform()
Сбрасывает преобразование просмотра до единичной матрицы.
См. также transform() и setTransform().
[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)
Переопределяет: QAbstractScrollArea::resizeEvent(QResizeEvent *event).
void QGraphicsView::rotate(qreal angle)
Поворачивает текущее преобразование просмотра на angle градусов по часовой стрелке.
См. также setTransform(), transform(), scale(), shear(), и translate().
[since 5.1] QRect QGraphicsView::rubberBandRect() const
Эта функция возвращает текущую область выделения (в координатах области просмотра), если пользователь в настоящее время выполняет выделение элемента с помощью резиновой полосы. Когда пользователь не использует резиновую полосу, эта функция возвращает (пустой) QRectF().
Обратите внимание, что часть этого QRect может быть за пределами видимой области просмотра. Например, она может содержать отрицательные значения.
Эта функция была добавлена в Qt 5.1.
См. также rubberBandSelectionMode и rubberBandChanged().
void QGraphicsView::scale(qreal sx, qreal sy)
Масштабирует текущее преобразование просмотра на (sx, sy).
См. также setTransform(), transform(), rotate(), shear(), и translate().
QGraphicsScene *QGraphicsView::scene() const
Возвращает указатель на сцену, которая в настоящее время отображается в представлении. Если в настоящее время сцена не отображается, возвращается nullptr.
См. также setScene().
[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)
Переопределяет: QAbstractScrollArea::scrollContentsBy(int dx, int dy).
void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
Включает flag, если enabled равно true; иначе отключает flag.
См. также optimizationFlags.
void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)
Если enabled равно true, то параметр отрисовки hint включен; иначе он отключен.
См. также renderHints.
void QGraphicsView::setScene(QGraphicsScene *scene)
Устанавливает текущую сцену на scene. Если scene уже используется, эта функция ничего не делает.
Когда сцена устанавливается в представлении, сигнал QGraphicsScene::changed() автоматически подключается к слоту updateScene() этого представления, а полосы прокрутки представления настраиваются для соответствия размеру сцены.
Представление не берет на себя владение scene.
См. также scene().
void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)
Устанавливает текущую матрицу преобразования представления на matrix.
Если combine равно true, то matrix объединяется с текущей матрицей; иначе matrix заменяет текущую матрицу. По умолчанию combine равно false.
Матрица преобразования преобразует сцену в координаты представления. Используя стандартное преобразование, предоставляемое единичной матрицей, один пиксель в представлении соответствует одному единичному значению в сцене (например, прямоугольный элемент 10x10 рисуется с помощью 10x10 пикселей в представлении). Если применяется матрица масштабирования 2x2, сцена будет отображаться в соотношении 1:2 (например, прямоугольный элемент 10x10 затем рисуется с использованием 20x20 пикселей в представлении).
Пример:
QGraphicsScene scene;
scene.addText("GraphicsView rotated clockwise");
QGraphicsView view(&scene);
view.rotate(90); // the text is rendered with a 90 degree clockwise rotation
view.show(); Для упрощения взаимодействия с элементами, используя преобразованное представление, QGraphicsView предоставляет функции mapTo... и mapFrom..., которые могут преобразовывать координаты сцены и представления. Например, вы можете вызвать mapToScene() для преобразования координаты представления в плавающую координату сцены или mapFromScene() для преобразования из плавающих координат сцены в координаты представления.
См. также transform(), rotate(), scale(), shear() и translate().
void QGraphicsView::shear(qreal sh, qreal sv)
Сдвигает текущее преобразование вида на (sh, sv).
См. также setTransform(), transform(), rotate(), scale() и translate().
[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)
Переопределяет: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QGraphicsView::sizeHint() const
Переопределяет: QAbstractScrollArea::sizeHint() const.
QTransform QGraphicsView::transform() const
Возвращает текущую матрицу преобразования для представления. Если текущее преобразование не задано, возвращается единичная матрица.
См. также setTransform(), rotate(), scale(), shear() и translate().
void QGraphicsView::translate(qreal dx, qreal dy)
Перемещает текущее преобразование представления на (dx, dy).
См. также setTransform(), transform(), rotate() и shear().
[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)
Переопределяет: QAbstractScrollArea::viewportEvent(QEvent *event).
QTransform QGraphicsView::viewportTransform() const
Возвращает матрицу, которая отображает координаты сцены в координаты области просмотра.
См. также mapToScene() и mapFromScene().
[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)
Переопределяет: QAbstractScrollArea::wheelEvent(QWheelEvent *e).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qgraphicsview.html