Класс QGraphicsView
Класс QGraphicsView предоставляет виджет для отображения содержимого QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsView> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QAbstractScrollArea |
Этот класс был представлен в Qt 4.2.
Открытые типы
| флаги | CacheMode |
| перечисление | CacheModeFlag { CacheNone, CacheBackground } |
| перечисление | DragMode { NoDrag, ScrollHandDrag, RubberBandDrag } |
| перечисление | OptimizationFlag { DontClipPainter, 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 = ...) |
| 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 |
| QList<QGraphicsItem *> | items(const QPoint &pos) const |
| QList<QGraphicsItem *> | items(int x, int y) const |
| QList<QGraphicsItem *> | items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QPoint | mapFromScene(const QPointF &point) const |
| QPolygon | mapFromScene(const QRectF &rect) const |
| QPolygon | mapFromScene(const QPolygonF &polygon) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPoint | mapFromScene(qreal x, qreal y) const |
| QPolygon | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToScene(const QPoint &point) const |
| QPolygonF | mapToScene(const QRect &rect) const |
| QPolygonF | mapToScene(const QPolygon &polygon) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(int x, int y) const |
| QPolygonF | mapToScene(int x, int y, int w, int h) const |
| QMatrix | matrix() const |
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio) |
| QPainter::RenderHints | renderHints() const |
| void | resetCachedContent() |
| void | resetMatrix() |
| void | resetTransform() |
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | rotate(qreal angle) |
| QRect | rubberBandRect() const |
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | scale(qreal sx, qreal sy) |
| QGraphicsScene * | scene() const |
| QRectF | sceneRect() const |
| void | setAlignment(Qt::Alignment alignment) |
| void | setBackgroundBrush(const QBrush &brush) |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
| void | setDragMode(QGraphicsView::DragMode mode) |
| void | setForegroundBrush(const QBrush &brush) |
| void | setInteractive(bool allowed) |
| void | setMatrix(const QMatrix &matrix, bool combine = false) |
| 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 является частью Графической системы просмотра.
Чтобы визуализировать сцену, начните с создания объекта 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 QGLWidget). QGraphicsView берет на себя управление виджетом области просмотра.
QGraphicsView поддерживает аффинные преобразования, используя QTransform. Вы можете либо передать матрицу в setTransform(), либо вызвать одну из удобных функций rotate(), scale(), translate() или shear(). Две наиболее распространённые преобразования – масштабирование (используется для масштабирования) и поворот. QGraphicsView сохраняет центр просмотра неизменным во время преобразования. Из-за выравнивания сцены (setAligment()), перемещение представления не оказывает визуального влияния.
Вы можете взаимодействовать с элементами сцены с помощью мыши и клавиатуры. QGraphicsView преобразует события мыши и клавиатуры в события сцены (события, унаследованные от QGraphicsSceneEvent) и передает их визуализируемой сцене. В конечном итоге именно отдельный элемент обрабатывает события и реагирует на них. Например, если вы щелкаете по выбираемому элементу, элемент, как правило, сообщает сцене, что он был выбран, и также перерисовывает себя, чтобы отобразить прямоугольник выделения. Аналогично, если вы щелкаете и перетаскиваете мышь, чтобы переместить перемещаемый элемент, это элемент обрабатывает перемещения мыши и перемещает себя. Взаимодействие с элементами включено по умолчанию, и вы можете отключить его, вызвав setInteractive().
Вы также можете предоставить собственное пользовательское взаимодействие со сценой, создав подкласс QGraphicsView и переопределив обработчики событий мыши и клавиатуры. Для упрощения программирования взаимодействия с элементами в представлении QGraphicsView предоставляет функции преобразования mapToScene() и mapFromScene(), и элементы доступа items() и itemAt(). Эти функции позволяют преобразовывать точки, прямоугольники, многоугольники и контуры между координатами представления и координатами сцены, а также находить элементы на сцене с использованием координат представления.
См. также QGraphicsScene, QGraphicsItem и QGraphicsSceneEvent.
Документация по типам членов
перечисление QGraphicsView::CacheModeFlagфлаги QGraphicsView::CacheMode
Это перечисление описывает флаги, которые вы можете установить для режима кэширования QGraphicsView.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsView::CacheNone |
0x0 |
Все отрисовка выполняется непосредственно на область просмотра. |
QGraphicsView::CacheBackground |
0x1 |
Фон кэшируется. Это влияет как на пользовательские фоны, так и на фоны, основанные на свойстве backgroundBrush. При включении этого флага, QGraphicsView выделит один pixmap с полным размером области просмотра. |
Тип CacheMode — это typedef для QFlags<CacheModeFlag>. Он хранит логическое ИЛИ сочетание значений CacheModeFlag.
См. также cacheMode.
enum QGraphicsView::DragMode
Этот перечисление описывает стандартное действие для просмотра при нажатии и перетаскивании мыши по области просмотра.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsView::NoDrag |
0 |
Ничего не происходит; событие мыши игнорируется. |
QGraphicsView::ScrollHandDrag |
1 |
Курсор меняется на указатель, а перетаскивание мышью приведет к прокрутке полос прокрутки. Этот режим работает как в интерактивном, так и в неинтерактивном режиме. |
QGraphicsView::RubberBandDrag |
2 |
Появится резиновый прямоугольник. Перетаскивание мышью установит геометрию резиновой области, и все элементы, покрытые резиновой областью, будут выбраны. Этот режим отключен для неинтерактивных представлений. |
См. также dragMode и QGraphicsScene::setSelectionArea().
enum QGraphicsView::OptimizationFlagflags QGraphicsView::OptimizationFlags
Это перечисление описывает флаги, которые можно включить для повышения производительности рендеринга в QGraphicsView. По умолчанию ни один из этих флагов не установлен. Обратите внимание, что установка флага обычно влечет за собой побочный эффект, и этот эффект может отличаться в зависимости от устройства отрисовки и платформы.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsView::DontClipPainter |
0x1 |
Это значение устарело и не имеет эффекта. |
QGraphicsView::DontSavePainterState |
0x2 |
При рендеринге QGraphicsView защищает состояние художника (см. QPainter::save()) при рендеринге фона или переднего плана, а также при рендеринге каждого элемента. Это позволяет вам оставить художника в измененном состоянии (т. е. вы можете вызвать QPainter::setPen() или QPainter::setBrush() без восстановления состояния после рисования). Однако, если элементы постоянно восстанавливают состояние, вы должны включить этот флаг, чтобы предотвратить QGraphicsView от выполнения того же. |
QGraphicsView::DontAdjustForAntialiasing |
0x4 |
Отключает автоматическую подстройку антиалиасинга QGraphicsView для отображаемых областей. Элементы, которые рисуют антиалиасинговые линии на границах своего QGraphicsItem::boundingRect(), могут в итоге отрисовывать части линии за пределами. Для предотвращения артефактов рендеринга QGraphicsView расширяет все отображаемые области на 2 пикселя во всех направлениях. Если вы включите этот флаг, QGraphicsView больше не будет выполнять эти корректировки, минимизируя области, требующие перерисовки, что повышает производительность. Типичным побочным эффектом является то, что элементы, которые рисуют с антиалиасингом, могут оставлять следы рисования на сцене по мере перемещения. |
QGraphicsView::IndirectPainting |
0x8 |
С Qt 4.6, восстановите старый алгоритм отрисовки, который вызывает QGraphicsView::drawItems() и QGraphicsScene::drawItems(). Используется только для совместимости со старым кодом. |
Это перечисление было введено или изменено в Qt 4.3.
Тип OptimizationFlags — это typedef для QFlags<OptimizationFlag>. Он хранит логическое ИЛИ сочетание значений OptimizationFlag.
enum QGraphicsView::ViewportAnchor
Это перечисление описывает возможные якоря, которые QGraphicsView может использовать при изменении размера просмотра пользователем или при преобразовании просмотра.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsView::NoAnchor |
0 |
Без якоря, т. е. просмотр оставляет положение сцены неизменным. |
QGraphicsView::AnchorViewCenter |
1 |
Точка сцены в центре просмотра используется в качестве якоря. |
QGraphicsView::AnchorUnderMouse |
2 |
Точка под курсором используется в качестве якоря. |
См. также resizeAnchor и transformationAnchor.
enum QGraphicsView::ViewportUpdateMode
Это перечисление описывает, как QGraphicsView обновляет свою область просмотра при изменении или повторном отображении содержимого сцены.
| Константа | Значение | Описание |
|---|---|---|
QGraphicsView::FullViewportUpdate |
0 |
При изменении или повторном отображении любой видимой части сцены QGraphicsView обновит всю область просмотра. Этот подход наиболее быстр, когда QGraphicsView тратит больше времени на определение того, что нужно нарисовать, чем на рисование (например, при многократном обновлении очень большого количества мелких элементов). Это предпочтительный режим обновления для областей просмотра, которые не поддерживают частичные обновления, таких как QGLWidget, и для областей просмотра, которые нуждаются в отключении оптимизации прокрутки. |
QGraphicsView::MinimalViewportUpdate |
1 |
QGraphicsView определит минимальную область просмотра, требующую перерисовки, минимизируя время, затраченное на рисование, избегая перерисовки областей, которые не изменились. Это стандартный режим QGraphicsView. Хотя этот подход обеспечивает лучшую производительность в целом, если на сцене много небольших видимых изменений, QGraphicsView может потратить больше времени на поиск минимального подхода, чем на рисование. |
QGraphicsView::SmartViewportUpdate |
2 |
QGraphicsView попытается найти оптимальный режим обновления, проанализировав области, требующие перерисовки. |
QGraphicsView::BoundingRectViewportUpdate |
4 |
Будет перерисована ограничительная прямоугольная область всех изменений в области просмотра. Этот режим имеет преимущество, заключающееся в том, что QGraphicsView ищет изменения только в одной области, минимизируя время, затрачиваемое на определение того, что нужно перерисовать. Недостатком является то, что также необходимо перерисовать области, которые не изменились. |
QGraphicsView::NoViewportUpdate |
3 |
QGraphicsView никогда не будет обновлять свою область просмотра при изменении сцены; ожидается, что пользователь будет контролировать все обновления. Этот режим отключает все (потенциально медленные) проверки видимости элементов в QGraphicsView и подходит для сцен, которые требуют фиксированной частоты кадров или где область просмотра в противном случае обновляется внешне. |
Это перечисление было введено или изменено в Qt 4.3.
См. также 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 для получения подробной информации.
По умолчанию никакие флаги оптимизации не включены.
Это свойство было введено в Qt 4.3.
Функции доступа:
| 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 использует выравнивание представления для позиционирования сцены в представлении.
Функции доступа:
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
См. также выравнивание и transformationAnchor.
rubberBandSelectionMode : Qt::ItemSelectionMode
Это свойство определяет поведение при выделении элементов с помощью прямоугольника выделения.
Это свойство определяет, как выделяются элементы при использовании режима перетаскивания RubberBandDrag.
Значение по умолчанию — Qt::IntersectsItemShape; все элементы, чья форма пересекается или содержится внутри резиновой ленты, выбираются.
Это свойство было введено в Qt 4.3.
Функции доступа:
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
См. также dragMode, items() и rubberBandRect().
sceneRect : QRectF
Это свойство содержит область сцены, визуализируемой в этом представлении.
Прямоугольник сцены определяет границы сцены, и в случае представления это означает область сцены, по которой вы можете перемещаться с помощью полос прокрутки.
Если свойство не задано или если установлен нулевой 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 использует выравнивание представления для позиционирования сцены в представлении.
Функции доступа:
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
См. также alignment и resizeAnchor.
viewportUpdateMode : ViewportUpdateMode
как область просмотра должна обновлять свое содержимое.
QGraphicsView использует это свойство для определения того, как обновлять области сцены, которые были повторно отображены или изменены. Обычно вам не нужно изменять это свойство, но есть некоторые случаи, когда это может улучшить производительность отрисовки. См. документацию по ViewportUpdateMode для получения подробной информации.
Значение по умолчанию — MinimalViewportUpdate, где QGraphicsView будет обновлять как можно меньшую область области просмотра при изменении содержимого.
Это свойство было введено в Qt 4.3.
Функции доступа:
| 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] 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 = ...)
Это перегруженный метод.
Этот вспомогательный метод эквивалентен вызову 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
Реализует: QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.
bool QGraphicsView::isTransformed() const
Возвращает true , если представление преобразовано (т.е. присвоено нетождественное преобразование или изменены полосы прокрутки).
Эта функция была добавлена в Qt 4.6.
См. также 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).
Эта функция была добавлена в Qt 4.3.
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)
Реализует: QAbstractScrollArea::keyPressEvent(QKeyEvent *e).
[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
Реализует: 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)).
QMatrix QGraphicsView::matrix() const
Возвращает текущую матрицу преобразования для просмотра. Если текущее преобразование не задано, возвращается единичная матрица.
См. также setMatrix(), transform(), rotate(), scale(), shear(), и translate().
[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::resetMatrix()
Сбрасывает матрицу преобразования просмотра на единичную матрицу.
См. также resetTransform().
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().
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::setMatrix(const QMatrix &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(), чтобы отобразить координаты сцены с плавающей точкой в координаты представления.
См. также matrix(), setTransform(), rotate(), scale(), shear() и translate().
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-5.13/qgraphicsview.html