Класс QGraphicsView
Класс QGraphicsView предоставляет виджет для отображения содержимого QGraphicsScene. Подробнее...
| Заголовок: | #include <QGraphicsView> |
| qmake: | QT += widgets |
| С версии: | Qt 4.2 |
| Наследует: | QAbstractScrollArea |
Публичные типы
| флаги | CacheMode |
| перечисление | CacheModeFlag { CacheNone, CacheBackground } |
| перечисление | DragMode { NoDrag, ScrollHandDrag, RubberBandDrag } |
| перечисление | OptimizationFlag { DontClipPainter, DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting } |
| флаги | OptimizationFlags |
| перечисление | ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse } |
| перечисление | ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate } |
Свойства
|
|
- 3 свойства унаследованы от QAbstractScrollArea
- 6 свойств унаследованы от QFrame
- 59 свойств унаследованы от QWidget
- 1 свойство унаследовано от QObject
Публичные функции
| QGraphicsView(QWidget *parent = nullptr) | |
| QGraphicsView(QGraphicsScene *scene, 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 |
- 20 публичных функций унаследовано от QAbstractScrollArea
- 14 публичных функций унаследовано от QFrame
- 214 публичных функций унаследовано от QWidget
- 31 публичной функции унаследовано от QObject
- 14 публичных функций унаследовано от QPaintDevice
Публичные слоты
| void | invalidateScene(const QRectF &rect, QGraphicsScene::SceneLayers layers) |
| void | updateScene(const QList<QRectF> &rects) |
| void | updateSceneRect(const QRectF &rect) |
Сигналы
| void | rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint) |
Статические публичные члены
| const QMetaObject | staticMetaObject |
- 5 статических публичных членов унаследовано от QWidget
- 9 статических публичных членов унаследовано от QObject
Защищенные функции
| 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 |
- 20 защищённых функций, унаследованных от QAbstractScrollArea
- 4 защищённых функций, унаследованных от QFrame
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Защищённые слоты
| виртуальный void | setupViewport(QWidget *widget) override |
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Класс QGraphicsView предоставляет виджет для отображения содержимого QGraphicsScene.
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 выделит один пиксель с полным размером области просмотра. |
Тип CacheMode является псевдонимом для QFlags<CacheModeFlag>. Он хранит логическое ИЛИ сочетание значений CacheModeFlag.
См. также cacheMode.
enum QGraphicsView::DragMode
Это перечисление описывает действие по умолчанию для просмотра при нажатии и перетаскивании мыши над областью просмотра.
| Постоянная | Значение | Описание |
|---|---|---|
QGraphicsView::NoDrag |
0 |
Ничего не происходит; событие мыши игнорируется. |
QGraphicsView::ScrollHandDrag |
1 |
Курсор меняется на указатель, и перетаскивание мыши будет прокручивать полосы прокрутки. Этот режим работает как в режиме interactive, так и в неинтерактивном режиме. |
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 является псевдонимом для 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
Это свойство содержит область сцены, отображаемую в этом представлении.
Прямоугольник сцены определяет пределы сцены, и в случае представления это означает область сцены, по которой можно перемещаться с помощью полос прокрутки.
Если свойство не задано или ему присвоено значение null QRectF, это свойство имеет такое же значение, как QGraphicsScene::sceneRect, и изменяется вместе с QGraphicsScene::sceneRect. В противном случае прямоугольник сцены представления не зависит от сцены.
Обратите внимание, что хотя сцена поддерживает практически неограниченный размер, диапазон полос прокрутки никогда не превысит диапазон целого числа (INT_MIN, INT_MAX). Если сцена больше, чем значения полос прокрутки, вы можете выбрать использование translate() для навигации по сцене.
По умолчанию это свойство содержит прямоугольник в начале координат с нулевой шириной и высотой.
Функции доступа:
| QRectF | sceneRect() const |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
См. также QGraphicsScene::sceneRect.
transformationAnchor : ViewportAnchor
как представление должно позиционировать сцену во время преобразований.
QGraphicsView использует это свойство, чтобы определить, как позиционировать сцену в области просмотра при изменении матрицы преобразования и преобразовании системы координат представления. Поведение по умолчанию, AnchorViewCenter, гарантирует, что точка сцены в центре представления остается неизменной во время преобразований (например, при вращении сцена будет вращаться вокруг центра представления).
Обратите внимание, что эффект этого свойства заметен, когда видна только часть сцены (т. е. когда есть полосы прокрутки). В противном случае, если вся сцена помещается в представление, QGraphicsScene использует выравнивание представления для позиционирования сцены в представлении.
Функции доступа:
| 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(QWidget *parent = nullptr)
Создаёт QGraphicsView. parent передаётся в конструктор QWidget.
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
Создаёт QGraphicsView и устанавливает отображаемую сцену в scene. parent передаётся в конструктор QWidget.
[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().
[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)
Переопределено из QAbstractScrollArea::dragEnterEvent().
[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
Переопределено из QAbstractScrollArea::dragLeaveEvent().
[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
Переопределено из QAbstractScrollArea::dragMoveEvent().
[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().
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().
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().
[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)
Переопределено из QWidget::focusNextPrevChild().
[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)
Переопределено из QWidget::focusOutEvent().
[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
Переопределено из QWidget::inputMethodEvent().
[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
Переопределено из QWidget::inputMethodQuery().
[slot] void QGraphicsView::invalidateScene(const QRectF &rect, QGraphicsScene::SceneLayers layers)
Делает недействительным и планирует перерисовку layers внутри rect. rect задаётся в координатах сцены. Любое кэшированное содержимое для layers внутри rect безусловно делается недействительным и перерисовывается.
Этот метод используется для уведомления QGraphicsView об изменениях фона или переднего плана сцены. Он часто используется для сцен с фоном на основе тайлов для уведомления об изменениях, когда QGraphicsView включил кэширование фона.
Обратите внимание, что QGraphicsView в настоящее время поддерживает кэширование только фона (см. QGraphicsView::CacheBackground). Этот метод эквивалентен вызову update(), если передаётся любой слой, кроме QGraphicsScene::BackgroundLayer.
См. также QGraphicsScene::invalidate() и update().
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().
[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
Переопределено из QWidget::keyReleaseEvent().
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().
[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
Переопределено из QAbstractScrollArea::mouseMoveEvent().
[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)
Переопределено из QAbstractScrollArea::mousePressEvent().
[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
Переопределено из QAbstractScrollArea::mouseReleaseEvent().
[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)
Переопределено из QAbstractScrollArea::paintEvent().
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().
void QGraphicsView::rotate(qreal angle)
Поворачивает текущее преобразование представления на angle градусов по часовой стрелке.
См. также setTransform(), transform(), scale(), shear(), и translate().
[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
Этот сигнал генерируется при изменении прямоугольника резиновой ленты. Прямоугольник представления задается с помощью rubberBandRect. Начальная и конечная точки перемещения указаны в координатах сцены с помощью fromScenePoint и toScenePoint.
При завершении выделения с помощью резиновой ленты этот сигнал будет сгенерирован с нулевыми значениями.
Эта функция была добавлена в Qt 5.1.
См. также rubberBandRect().
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
Возвращает указатель на сцену, которая в данный момент отображается в представлении. Если сцена в данный момент не отображается, возвращается 0.
См. также setScene().
[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)
Переопределено из QAbstractScrollArea::scrollContentsBy().
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().
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().
[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)
Переопределено из QAbstractScrollArea::setupViewport().
Этот слот вызывается QAbstractScrollArea после вызова setViewport(). Переопределите эту функцию в подклассе QGraphicsView, чтобы инициализировать новое представление widget перед его использованием.
См. также setViewport().
void QGraphicsView::shear(qreal sh, qreal sv)
Выполняет сдвиг текущего преобразования представления на (sh, sv).
См. также setTransform(), transform(), rotate(), scale() и translate().
[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)
Переопределено из QWidget::showEvent().
[override virtual] QSize QGraphicsView::sizeHint() const
Переопределено из QAbstractScrollArea::sizeHint().
QTransform QGraphicsView::transform() const
Возвращает текущую матрицу преобразования для представления. Если текущее преобразование не установлено, возвращается единичная матрица.
См. также setTransform(), rotate(), scale(), shear() и translate().
void QGraphicsView::translate(qreal dx, qreal dy)
Перемещает текущее преобразование представления на (dx, dy).
См. также setTransform(), transform(), rotate() и shear().
[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)
Планирует обновление прямоугольников сцены rects.
См. также QGraphicsScene::changed().
[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)
Уведомляет QGraphicsView, что прямоугольник сцены сцены изменился. rect — новый прямоугольник сцены. Если в представлении уже есть явно заданный прямоугольник сцены, эта функция ничего не делает.
См. также sceneRect и QGraphicsScene::sceneRectChanged().
[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)
Переопределено из QAbstractScrollArea::viewportEvent().
QTransform QGraphicsView::viewportTransform() const
Возвращает матрицу, которая отображает координаты сцены в координаты области просмотра.
См. также mapToScene() и mapFromScene().
[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)
Переопределено из QAbstractScrollArea::wheelEvent().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qgraphicsview.html