Описание класса QGraphicsView
|
|
|
Класс QGraphicsView предоставляет виджет для отображения содержимого QGraphicsScene.
QGraphicsView отображает содержимое QGraphicsScene в прокручиваемой области. За подробностями о создании сцены с геометрическими элементами обращайтесь к документации по QGraphicsScene. 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). Когда сцена больше чем значения полос прокрутки, вы можете выбрать использования translate() для перемещения по сцене.
QGraphicsView отображает сцену вызывая render(). По-умолчанию, элементы отрисовываются в области отображения используя обычный QPainter и подсказки отображения по-умолчанию. Чтобы изменить подсказки отображения по-умолчанию, которые QGraphicsView передаёт QPainter при отрисовке элементов, вы можете вызвать setRenderHints().
По-умолчанию, QGraphicsView предоставляет обычный QWidget для области отображения. Вы можете получить доступ к виджету вызвав viewport(), или вы можете заменить его вызвав setViewport(). Для отображения с использованием OpenGL, просто вызовите setViewport(new QGLWidget). QGraphicsView становится владельцем виджета области отображения.
QGraphicsView поддерживает аффинные преобразования используя QMatrix. Вы можете или передать матрицу функции setMatrix(), или вы можете вызвать одну из вспомогательных функций rotate(), scale(), translate() или shear(). Наиболее распространёнными преобразованиями являются масштабирование, используемое при реализации увеличения, и поворот. QGraphicsView фиксирует центр вида при преобразовании.
Вы можете взаимодействовать с элементами на сцене используя мышь и клавиатуру. QGraphicsView переводит события мыши и клавиатуры в события сцены (события, которые наследуют QGraphicsSceneEvent), и передаёт их отображаемой сцене. В конечном счете, элемент сам решает как обрабатывать события и отвечать на них. Например, если вы кликните на выделяемом элементе, этот элемент позволит сцене узнать что он был выбран и он также перерисует себя чтобы отобразить прямоугольник выделения. Аналогично, если вы кликните и потащите мышку чтобы переместить перемещаемый элемент, этот элемент обработает перемещение мыши и переместит себя. Взаимодействие с элементом включено по-умолчанию, и вы можете переключить его вызвав setInteractive().
Вы также можете предоставить ваше собственное взаимодействие со сценой создав подкласс QGraphicsView и переопределив обработчики событий мыши и клавиатуры. Что бы упростить вам программное взаимодействие с элементами в виде, QGraphicsView предоставляет функции преобразования mapToScene() и mapFromScene() и средство доступа к элементам items() и itemAt(). Эти функции позволят вам преобразовывать точки, прямоугольники, полигоны и пути между координатами вида и сценыи находить элементы на сцене используя координаты вида.
Смотрите также QGraphicsScene, QGraphicsItem и QGraphicsSceneEvent.
Это перечисление описывает флаги, которые вы можете установить для режима кэша QGraphicsView.
Константа | Значение | Описание |
---|---|---|
QGraphicsView::CacheNone | 0x0 | Все рисование происходит прямо на области отображения. |
QGraphicsView::CacheBackground | 0x1 | Кэшируется фон. Это влияет и на пользовательский фон, и на фон, основанный на свойстве backgroundBrush. Когда этот флаг установлен, QGraphicsView будет выделять одно растровое изображение с размером области просмотра. |
Тип CacheMode это определение типа для QFlags<CacheModeFlag>. Он хранит комбинацию ИЛИ значений CacheModeFlag.
Смотрите также cacheMode.
Это перечисление описывает действия по-умолчанию для вида при нажатии и перетаскивании мыши над областью просмотра.
Константа | Значение | Описание |
---|---|---|
QGraphicsView::NoDrag | 0 | Ничего не происходит; события мыши игнорируются. |
QGraphicsView::ScrollHandDrag | 1 | Курсор изменяется на указывающую руку и перемещение мыши будет прокручивать полосы прокрутки. Этот режим работает и в интерактивном и в неинтерактивном режиме. |
QGraphicsView::RubberBandDrag | 2 | Появляется резиновая нить. Перетаскивание мыши установит геометрию резиновой нити, и все элементы, обведённые резиновой нитью, будут выделены. Этот режим отключён для неинтерактивных видов. |
Смотрите также dragMode и QGraphicsScene::setSelectionArea().
Это перечисление описывает флаги, которые вы можете включить для увеличения производительности отрисовки в QGraphicsView. По-умолчанию ни один из этих флагов не установлен. Заметьте, что установка флагов имеет побочный эффект, и этот эффект может меняться для разных устройств рисования и платформ.
Константа | Значение | Описание |
---|---|---|
QGraphicsView::DontClipPainter | 0x1 | QGraphicsView иногда обрезает рисовальщик при отображении содержимого сцены. Это может сильно улучшить производительность (например, отрисовка только маленьких частей большого растрового изображения) и защитить от ошибок отображения (например, отрисовке вне ограничивающих прямоугольников или вне показываемой области). Тем не менее, в некоторых ситуациях, обрезание рисовальщика может замедлить отрисовку, особенно когда все рисования ограничены в показываемой области. Включая этот флаг, QGraphicsView полностью отключит своё неявное обрезание. Заметьте, что при отключении обрезания могут возникнуть артефакты изображения от использования полупрозрачных кистей. |
QGraphicsView::DontSavePainterState | 0x2 | При отображении фона и каждого элемента QGraphicsView защищает состояние рисовальщика (смотрите QPainter::save()). Это позволяет вам оставлять рисовальщик в изменённом состоянии (т.е. вы можете вызвать QPainter::setPen() или QPainter::setBrush() без восстановления его состояния после отрисовки). Тем не менее, если элементы постоянно восстанавливают состояние, вы должны включить флаг чтобы не дать QGraphicsView делать тоже самое. |
QGraphicsView::DontAdjustForAntialiasing | 0x4 | Отключает автонастройку антиалиасинга показываемой области QGraphicsView. Элементы, которые отрисовывают сглаженные линии на границах их QGraphicsItem::boundingRect(), могут закончить рисование линий снаружи. Чтобы избежать артефакты отрисовки, QGraphicsView расширяет отображаемые области на 2 пиксела во всех направлениях. Если вы включите этот флаг, QGraphicsView больше не будет выполнять эти настройки, уменьшая области которые требуют перерисовки, что улучшает производительность. Обычный побочных эффект в данном случае будет в том, что элементы, которые отрисовываются со сглаживанием, могут оставлять следы отрисовки на сцене при перемещении. |
Данное перечисление было введено в Qt 4.3.
The OptimizationFlags type is a typedef for QFlags<OptimizationFlag>. Он хранит комбинацию ИЛИ значений OptimizationFlag values.
Это перечисление описывает возможные якори, которые QGraphicsView может использовать когда пользователь изменяет размер вида или когда вид преобразуется.
Константа | Значение | Описание |
---|---|---|
QGraphicsView::NoAnchor | 0 | Нет якоря, т.е. вид оставляет позицию сцены неизменной. |
QGraphicsView::AnchorViewCenter | 1 | В качестве якоря используется точка сцены в центре вида. |
QGraphicsView::AnchorUnderMouse | 2 | В качестве якоря используется точка под курсором мышки. |
Смотрите также resizeAnchor и transformationAnchor.
Это перечисление описывает как 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.
Это свойство содержит выравнивание сцены в виде, когда вся сцена видима.
Если вся сцена видима в виде (т.е., нет видимых полос прокрутки), выравнивание вида будет определять где сцена будет отрисована в виде. Например, если выравнивание равно Qt::AlignCenter, которое используется по умолчанию, сцена будет отцентрирована в виде, а если выравнивание равно (Qt::AlignLeft | Qt::AlignTop), сцена будет отрисована в верхнем левом углу вида.
Функции доступа:
Это свойство содержит кисть фона сцены.
Это свойство устанавливает кисть фона для сцены в виде. Она используется для переназначения фона сцены и определяет поведение drawBackground(). Чтобы предоставить собственную отрисовку фона для этого вида, вместо этого вы можете переопределить drawBackground().
По умолчанию, это свойство содержит кисть с шаблоном Qt::NoBrush.
Функции доступа:
Смотрите также QGraphicsScene::backgroundBrush и foregroundBrush.
Это свойство содержит какая часть вида кэшируется.
QGraphicsView может кэшировать заранее отрисованное содержимое в QPixmap, которое затем отрисовывается в области просмотра. Целью такого кэширования является сокращение времени отображения медленно отрисовываемых областей. Например, текстура, градиент и прозрачный фон могут заметно замедлить отрисовку, особенно в преобразованном виде. Флаг CacheBackground разрешает кэширование фона вида. Например:
QGraphicsView view; view.setBackgroundBrush(QImage(":/images/backgroundtile.png")); view.setCacheMode(QGraphicsView::CacheBackground);
Кэш становится негодным при каждом преобразовании вида. Тем не менее, при прокрутке негодной становится только часть кэша.
По-умолчанию, ничего не кэшируется.
Функции доступа:
Смотрите также resetCachedContent() и QPixmapCache.
Это свойство содержит поведение для перемещения мыши над сценой при нажатой левой кнопке мыши.
Это свойство определяет что должно произойти когда пользователь кликает на фоне сцены и перетаскивает мышь (например, прокрутка содержимого области просмотра с курсором указателя в виде руки или выделение нескольких элементов с помощью резиновой ленты). Значение по умолчанию NoDrag ничего не делает.
Это поведение влияет только на клики мышки, которые не обрабатываются каким-нибудь элементом. Вы можете определить собственное поведение создав подкласс QGraphicsView и переопределив mouseMoveEvent().
Функции доступа:
Это свойство содержит кисть для переднего плана сцены.
Это свойство устанавливает кисть переднего плана сцены в данном виде. Она используется для переопределения кисти переднего плана сцены и определяет поведение drawForeground(). Что предоставить собственную отрисовку переднего плана для этого вида, вместо этого вы можете переопределить drawForeground().
По умолчанию, это свойство содержит кисть с шаблоном Qt::NoBrush.
Функции доступа:
Смотрите также QGraphicsScene::foregroundBrush и backgroundBrush.
Это свойство определяет, позволяет ли вид взаимодействие со сценой.
Если равно true, то этот вид позволяет взаимодействие со сценой. В противном случае, вид не позволит взаимодействие, и любые события мыши или клавиатуры будут игнорированы (т.е. вид будет работать в режиме только для чтения).
По умолчанию это свойство равно true.
Функции доступа:
Это свойство содержит флаги, которые могут быть использованы для настройки производительности QGraphicsView.
QGraphicsView использует обрезание, дополнительные настройки ограничивающего прямоугольника и другие вспомогательные средства для улучшения качества отрисовки и производительности для графической сцены. Тем не менее, в зависимости от целевой платформы и используемой области просмотра, некоторые из этих операций могут снизить производительность.
Эффект отличается в зависимости от флага; за подробностями обращайтесь к документации по OptimizationFlags.
По-умолчанию, ни одного флага не установлено.
Это свойство было введено в Qt 4.3.
Функции доступа:
Смотрите также setOptimizationFlag().
Это свойство содержит значения подсказок отображения по-умолчанию.
Эти подсказки используются для инициализации QPainter перед тем, как каждый видимый элемент будет нарисован. QPainter использует подсказки отображения для переключения особенностей отображения, таких как антиалиасинг и гладкое преобразование растровых изображений.
QPainter::TextAntialiasing включен по умолчанию.
Пример:
QGraphicsScene scene; scene.addRect(QRectF(-10, -10, 20, 20)); QGraphicsView view(&scene); view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); view.show();
Функции доступа:
Это свойство определяет как вид должен располагать сцену при изменение размера вида.
QGraphicsView использует это свойство для определения как располагать сцену в области просмотра при изменении размера виджета области просмотра. Поведение по-умолчанию, NoAnchor, оставляет положение сцены без изменений; верхний левый угол вида будет использоваться в качестве якоря при изменении размера.
Заметьте, что эффект от этого свойства заметен только когда лишь часть сцены видна (т.е. когда есть полосы прокрутки). В противном случае, если сцена полностью помещается в виде, QGraphicsScene использует свойство вида alignment для расположения сцены в виде.
Функции доступа:
Смотрите также alignment, transformationAnchor и Qt::WNorthWestGravity.
Это свойство содержит поведение для выделения элементов с помощью резиновой ленты.
Это свойство определяет как элементы выбираеются при использовании режима перетаскивания RubberBandDrag.
Значение по-умолчанию равно Qt::IntersectsItemShape; все элементы, чья фигура пересекается с или содержится в области резиновой ленты, выделяются.
Это свойство было введено в Qt 4.3.
Функции доступа:
Смотрите также dragMode и items().
Это свойство содержит область сцены, отображаемой этим видом.
Прямоугольник сцены определяет протяжённость сцены, а для случая вида, он определяет область сцены, по которой вы можете перемещаться с использованием полос прокрутки.
Если это свойство не определено или установлен пустойl QRectF, это свойство имеет такое же значение, как и QGraphicsScene::sceneRect, и изменяется вместе с QGraphicsScene::sceneRect. В противном случае, область сцены вида не зависит от сцены.
Заметьте, что хотя сцена поддерживает неограниченный размер, диапазон полос прокрутки никогда не превысит диапазон целых чисел (INT_MIN, INT_MAX). Когда сцена больше чем значения полос прокрутки, вы можете выбрать использования translate() для перемещения по сцене.
По-умолчанию, это свойство содержит прямоугольник в начальной позиции с нулевой высотой и шириной.
Функции доступа:
Смотрите также QGraphicsScene::sceneRect.
Это свойство определяет как вид должен располагать сцену при преобразовании.
QGraphicsView использует это свойство для определения как располагать сцену в области просмотра при изменении матрицы преобразования или координатной системы вида. Поведение по-умолчанию, AnchorViewCenter, обеспечивает что точка в центре вида останется неизменной во время преобразований (например, при повороте сцена будет вращаться вокруг центра вида).
Заметьте, что эффект от этого свойства заметен только когда лишь часть сцены видна (т.е. когда есть полосы прокрутки). В противном случае, если сцена полностью помещается в виде, QGraphicsScene использует свойство вида alignment для расположения сцены в виде.
Функции доступа:
Смотрите также alignment и resizeAnchor.
Это свойство определяет как область просмотра должна обновлять своё содержимое.
QGraphicsView использует это свойство для решения как обновлять области сцены, которые были показаны повторно и изменены. Обычно вам не надо изменять это свойство, но есть некоторые случаи, когда некоторые классы делают так для увеличения производительности отрисовки. За подробностями обращайтесь к документации ViewportUpdateMode.
Значение по-умолчанию равно MinimalViewportUpdate, при этом QGraphicsView будет обновлять наименее возможную область области просмотра при изменении содержимого.
Это свойство было введено в Qt 4.3.
Функции доступа:
Смотрите также ViewportUpdateMode и cacheMode.
Создаёт QGraphicsView. parent передаётся в конструктор QWidget.
Создаёт QGraphicsView и устанавливает отображаемую сцену равной scene. parent передаётся в конструктор QWidget.
Уничтожает объект QGraphicsView.
Прокручивает содержимое области просмотра чтобы обеспечить что координата сцены pos находиться в центре вида.
Так как pos является вещественной координатой, а полосы прокрутки работают с целыми, центрирование будет приблизительным.
Замечание: Если элемент расположен близко или за границей, он будет виден в виде, но не центрирован.
Смотрите также ensureVisible().
Это перегруженная функция.
Эта функция предоставлена для удобства. Она эквивалентна вызову centerOn(QPointF(x, y)).
Это перегруженная функция.
Прокручивает содержимое области просмотра чтобы обеспечить что элемент item находиться в центре вида.
Смотрите также ensureVisible().
Отрисовывает фон сцены с использованием painter перед отрисовкой любого элемента или переднего плана. Переопределите эту функцию для предоставления собственного фона для этого вида.
Если все что вы хотите это определить цвет, текстуру или градиент для фона, вместо этого вы можете вызвать setBackgroundBrush().
Все рисования производятся в координатахсцены. rect это отображаемый прямоугольник.
Реализация по-умолчанию заполняет прямоугольник rect с использованием кисти вида backgroundBrush. Если эта кисть не определена (по-умолчанию), то вместо этого будет вызвана функция сцены drawBackground().
Смотрите также drawForeground() и QGraphicsScene::drawBackground().
Отрисовывает передний план сцены с использованием painter после отрисовки фона и всех элементов. Переопределите эту функцию для предоставления собственного переднего плана для этого вида.
Если все что вы хотите это определить цвет, текстуру или градиент для переднего плана, вместо этого вы можете вызвать setForegroundBrush().
Все рисования производятся в координатахсцены. rect это отображаемый прямоугольник.
Реализация по-умолчанию заполняет прямоугольник rect с использованием кисти вида foregroundBrush. Если эта кисть не определена (по-умолчанию), то вместо этого будет вызвана функция сцены drawForeground().
Смотрите также drawBackground() и QGraphicsScene::drawForeground().
Отрисовывает элементы items на сцене с использованием рисовальщика painter, после того как отрисован фон, но до того как отрисован передний план. numItems это число элементов в items и опций в options. options это список опций стиля; по одной для каждого элемента. Переопределите эту функцию для предоставления собственной отрисовки элемента для этого вида.
Реализация по-умолчанию вызывает функцию сцены drawItems().
Смотрите также drawForeground(), drawBackground() и QGraphicsScene::drawItems().
Прокручивает содержимое области просмотра чтобы был виден прямоугольник сцены rect с полями xmargin и ymargin, указанными в пикселах. Если указанный прямоугольник не может быть достигнут, содержимое прокручивается до ближайшего годного положения. Значение по-умолчанию для обоих полей равно 50 пикселов.
Смотрите также centerOn().
Это перегруженная функция.
Эта функция предоставлена для удобства. Она эквивалентна вызову ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
Это перегруженная функция.
Прокручивает содержимое области просмотра чтобы был виден центр элемента item с полями xmargin и ymargin, указанными в пикселах. Если указанная точка не может быть достигнута, содержимое прокручивается до ближайшего годного положения. Значение по-умолчанию для обоих полей равно 50 пикселов.
Смотрите также centerOn().
Масштабирует матрицу вида и прокручивает полосы прокрутки чтобы обеспечить что прямоугольник сцены rect помещался в области просмотра. Прямоугольник rect должен быть внутри прямоугольника сцены; в противном случае fitInView() не может гарантировать что весь прямоугольник будет видимым.
Эта функция сохраняет поворот, трансляцию и обрезание вида. Вид масштабируется в соответствии с aspectRatioMode. Если прямоугольник rect не плотно размещается в виде, он будет центрирован.
Обычно fitInView() вызывают из переопределённой функции resizeEvent() чтобы обеспечить чтобы вся сцена или её часть автоматически масштабировались для заполнения нового размера области просмотра, если вид меняет свой размер. Заметьте, что вызов fitInView() из resizeEvent() может привести к нежелательному рекурсивному изменению размера, если новое преобразование переключает автоматическое состояние полос прокрутки. Чтобы предотвратить это, вы можете установить политику полос прокрутки равной "always on" или "always off" (смотрите horizontalScrollBarPolicy() и verticalScrollBarPolicy()).
Если rect пустой, или если область отображения слишком маленькая, то эта функция ничего не делает.
Смотрите также setMatrix(), ensureVisible() и centerOn().
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову fitInView(QRectF(x, y, w, h), aspectRatioMode).
Смотрите также ensureVisible() и centerOn().
Это перегруженная функция.
Обеспечивает что элемент item плотно размещается внутри вида, путём масштабирования вида с соответствии с aspectRatioMode.
Смотрите также ensureVisible() и centerOn().
Делает недействительными и планирует перерисовку слоёв layers внутри прямоугольника rect. rect задаётся в координатах сцены. Любое кэшированное содержимое для слоёв layers внутри прямоугольника rect признаётся негодным и перерисовывается.
Вы можете вызывать эту функцию чтобы сообщать QGraphicsView об изменениях фона или переднего плана сцены. Она обычно используется для сцен с фоном, основанным на плитках, чтобы сообщать об изменениях когда QGraphicsView включает кэширование фона.
Заметьте, что QGraphicsView пока поддерживает кэширование только фона (смотрите QGraphicsView::CacheBackground). Эта функция эквивалента вызову update() если передается любой слой, кроме QGraphicsScene::BackgroundLayer.
Смотрите также QGraphicsScene::invalidate() и update().
Возвращает элемент в точка 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().
Это перегруженная функция.
Эта функция предоставлена для удобства. Она эквивалентна вызову itemAt(QPoint(x, y)).
Возвращает список элементов в связанной сцене.
Смотрите также QGraphicsScene::items().
Возвращает список всех элементов в точке pos области просмотра. Элементы перечисляются в порядке убывания координаты Z (т.е., первый элемент в списке будет тот, который расположен выше всех, а последний - расположенный в самом низу). 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() и QGraphicsItem::zValue().
Эта функция предоставлена для удобства. Она эквивалентна вызову items(QPoint(x, y)).
Эта вспомогательная функция эквивалента вызову items(QRectF(x, y, w, h), mode).
Эта функция была введена в Qt 4.3.
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от режима mode, или содержатся в, или пересекаются с прямоугольником rect. rect задаётся в координатах области просмотра.
Значение по-умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в прямоугольнике rect.
Смотрите также itemAt(), items() и mapToScene().
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от режима mode, или содержатся в, или пересекаются с полигоном polygon. polygon задаётся в координатах области просмотра.
Значение по-умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в полигоне polygon.
Смотрите также itemAt(), items() и mapToScene().
Это перегруженная функция.
Возвращает список всех элементов, которые, в зависимости от режима mode, или содержатся в, или пересекаются с путём path. path задаётся в координатах области просмотра.
Значение по-умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в пути path.
Смотрите также itemAt(), items() и mapToScene().
Возвращает точку сцены point в координатах области просмотра.
Смотрите также mapToScene().
Возвращает прямоугольник сцены rect в виде полигона, заданного в координатах области просмотра.
Смотрите также mapToScene().
Возвращает полигон сцены polygon в виде полигона, заданного в координатах области просмотра.
Смотрите также mapToScene().
Возвращает путь сцены path в виде пути, заданного в координатах области просмотра.
Смотрите также mapToScene().
Эта функция предоставлена для удобства. Она эквивалентна вызову mapFromScene(QPointF(x, y)).
Эта функция предоставлена для удобства. Она эквивалентна вызову mapFromScene(QRectF(x, y, w, h)).
Возвращает точку области просмотра point, переведённую в координаты сцены.
Замечание: Иногда может быть полезнее переводить весь прямоугольник, покрываемый пикселом в точке point вместо конкретной точки. Для этого можно вызвать mapToScene(QRect(point, QSize(2, 2))).
Смотрите также mapFromScene().
Возвращает прямоугольник области просмотра rect в виде полигона, заданного в координатах сцены.
Смотрите также mapFromScene().
Возвращает полигон области просмотра polygon, в виде полигона, заданного в координатах сцены.
Смотрите также mapFromScene().
Возвращает путь области просмотра path в виде пути, заданного в координатах сцены.
Смотрите также mapFromScene().
Эта функция предоставлена для удобства. Она эквивалентна вызову mapToScene(QPoint(x, y)).
Эта функция предоставлена для удобства. Она эквивалентна вызову mapToScene(QRect(x, y, w, h)).
Возвращает текущую матрицу преобразования вида. Если нет установленной матрицы преобразования, то возвращается единичная матрица.
Смотрите также setMatrix(), rotate(), scale(), shear() и translate().
Отображает прямоугольник сцены 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); // печатаем, размещая содержимое области просмотра на всю страницу view.render(&painter); // печатаем верхнюю половину области просмотра в нижней // половине страницы. 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 это размер бумаги).
Содержимое прямоугольника источника будет преобразовано в соответствии с aspectRatioMode для размещения в прямоугольнике назначения. По-умолчанию соотношение сторон сохраняется, а source масштабируется чтобы размещаться в target.
Смотрите также QGraphicsScene::render().
Сбрасывает любое кэшированное содержимое. Вызов этой функции очистит кэш QGraphicsView. Если текущий режим кэширования равен CacheNone, то эта функция ничего не делает.
Эта функция вызывается автоматически когда изменяются свойства backgroundBrush или QGraphicsScene::backgroundBrush; вам необходимо вызывать эту функцию если вы переопределили QGraphicsScene::drawBackground() или QGraphicsView::drawBackground() чтобы отрисовывать собственный фон или надо вызвать полную перерисовку.
Смотрите также cacheMode().
Сбрасывает матрицу преобразования вида на единичную.
Сбрасывает преобразование вида на единичную матрицу.
Смотрите также transform() и setTransform().
Поворачивает текущее преобразование вида на угол angle в градусах по часовой стрелке.
Смотрите также setMatrix(), matrix(), scale(), shear() и translate().
Увеличивает текущее преобразование вида на (sx, sy).
Смотрите также setMatrix(), matrix(), rotate(), shear() и translate().
Возвращает указатель на сцену, которая отображается в виде. Если нет отображаемой сцены, возвращается 0.
Смотрите также setScene().
Устанавливает текущую матрицу преобразований вида равной 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); // текст отрисуется с поворотом на 90 градусов по часовой стрелке
view.show();
Чтобы упростить взаимодействие с элементами при использовании преобразованного вида, QGraphicsView предоставляет функции mapTo... и mapFrom... которые могут преобразовывать между координатами сцены и вида. Например, вы можете вызвать mapToScene() чтобы перевести координаты вида в вещественные координаты сцены, или mapFromScene() чтобы перевести из вещественных координат сцены в координаты вида.
Смотрите также matrix(), rotate(), scale(), shear() и translate().
Устанавливает флаг flag если enabled равно true; в противном случае отключает флаг flag.
Смотрите также optimizationFlags.
Если enabled равно true, подсказка отображения hint будет включена; в противном случае она будет отключена.
Смотрите также renderHints.
Устанавливает текущую сцену равной scene. Если сцена scene уже отображается этом видом, то эта функция ничего не делает.
Когда сцена устанавливается в виде, сигнал QGraphicsScene::changed() автоматически соединяется со слотов вида updateScene(), а полосы прокрутки вида настраиваются в соответствии с размером сцены.
Смотрите также scene().
Устанавливает текущую матрицу преобразований вида равной 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); // текст отрисуется с поворотом на 90 градусов по часовой стрелке
view.show();
Чтобы упростить взаимодействие с элементами при использовании преобразованного вида, QGraphicsView предоставляет функции mapTo... и mapFrom... которые могут преобразовывать между координатами сцены и вида. Например, вы можете вызвать mapToScene() чтобы перевести координаты вида в вещественные координаты сцены, или mapFromScene() чтобы перевести из вещественных координат сцены в координаты вида.
Смотрите также transform(), rotate(), scale(), shear() и translate().
Этот слот вызывается QAbstractScrollArea после вызова setViewport(). Переопределите эту функцию в подклассе QGraphicsView чтобы инициализировать область просмотра widget перед его использованием.
Смотрите также setViewport().
Обрезает текущее преобразование вида на (sh, sv).
Смотрите также setMatrix(), matrix(), rotate(), scale() и translate().
Возвращает текущую матрицу преобразования вида. Если нет установленной матрицы преобразования, то возвращается единичная матрица.
Смотрите также setTransform(), rotate(), scale(), shear() translate().
Перемещает текущее преобразование вида на (dx, dy).
Смотрите также setMatrix(), matrix(), rotate() и shear().
Планирует обновление прямоугольника сцены rects.
Смотрите также QGraphicsScene::changed().
Уведомляет QGraphicsView что изменился прямоугольник сцены. rect это новый прямоугольник сцены. Если у вида уже есть явно установленный прямоугольник сцены, то эта функция ничего не делает.
Смотрите также sceneRect и QGraphicsScene::sceneRectChanged().
Возвращает матрицу, которая переводит координаты области просмотра в координаты сцены.
Смотрите также mapToScene() и mapFromScene().
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) | Торговые марки | Qt 4.5.3 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |