Класс 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
- 34 публичных функций унаследованных от 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) |
Защищенные функции
| virtual void | drawBackground(QPainter *painter, const QRectF &rect) |
| virtual void | drawForeground(QPainter *painter, const QRectF &rect) |
Переопределённые защищенные функции
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual void | dragEnterEvent(QDragEnterEvent *event) override |
| virtual void | dragLeaveEvent(QDragLeaveEvent *event) override |
| virtual void | dragMoveEvent(QDragMoveEvent *event) override |
| virtual void | dropEvent(QDropEvent *event) override |
| virtual bool | event(QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *event) override |
| virtual bool | focusNextPrevChild(bool next) override |
| virtual void | focusOutEvent(QFocusEvent *event) override |
| virtual void | inputMethodEvent(QInputMethodEvent *event) override |
| virtual void | keyPressEvent(QKeyEvent *event) override |
| virtual void | keyReleaseEvent(QKeyEvent *event) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) override |
| virtual void | mouseMoveEvent(QMouseEvent *event) override |
| virtual void | mousePressEvent(QMouseEvent *event) override |
| virtual void | mouseReleaseEvent(QMouseEvent *event) override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual void | showEvent(QShowEvent *event) override |
| virtual bool | viewportEvent(QEvent *event) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
- 20 защищенных функций, унаследованных от QAbstractScrollArea
- 4 защищенных функций, унаследованных от QFrame
- 35 защищенных функций, унаследованных от QWidget
- 9 защищенных функций, унаследованных от QObject
- 1 защищенная функция, унаследованная от QPaintDevice
Защищенные слоты
| virtual void | setupViewport(QWidget *widget) override |
- 1 защищенный слот, унаследованный от QWidget
Дополнительные унаследованные члены
- 1 общедоступная переменная, унаследованная от QObject
- 5 статические общедоступные члены, унаследованные от QWidget
- 10 статических общедоступных членов, унаследованных от QObject
- 2 защищённых переменных, унаследованных от QObject
- 1 защищённый тип, унаследованный от QPaintDevice
Подробное описание
Класс 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.
Документация типов членов
enum QGraphicsView::CacheModeFlagflags 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 |
Курсор меняется на указатель руки, и перетаскивание мыши будет прокручивать полосы прокрутки. Этот режим работает как в интерактивном, так и в неинтерактивном режиме. |
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 использует выравнивание представления alignment для позиционирования сцены в представлении.
Функции доступа:
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
См. также alignment и 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.
См. также 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/archives/qt-5.11/qgraphicsview.html