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