Spec-Zone.ru › Qt 5.13

Класс 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 }

Свойства

  • alignment : Qt::Alignment
  • backgroundBrush : QBrush
  • cacheMode : CacheMode
  • dragMode : DragMode
  • foregroundBrush : QBrush
  • interactive : bool
  • optimizationFlags : OptimizationFlags
  • renderHints : QPainter::RenderHints
  • resizeAnchor : ViewportAnchor
  • rubberBandSelectionMode : Qt::ItemSelectionMode
  • sceneRect : QRectF
  • transformationAnchor : ViewportAnchor
  • viewportUpdateMode : ViewportUpdateMode

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

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

Spec-Zone.ru

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