Описание класса QGraphicsSceneКласс QGraphicsScene предоставляет поверхность для управления большим числом графических 2D элементов. Далее... #include <QGraphicsScene> Унаследован от: QObject. Класс был добавлен в Qt 4.2. Открытые типы
Свойства
Открытые функции
Открытые слоты
Сигналы
Защищенные функции
Переопределённые защищённые функции
Защищённые слоты
Дополнительные унаследованные члены
Подробное описаниеКласс QGraphicsScene предоставляет поверхность для управления большим числом графических 2D элементов. Этот класс служит как контейнер для QGraphicsItems. Он используется вместе с QGraphicsView для отображения графических объектов, таких как линии, прямоугольники, текст или даже собственные элементы на двухмерной поверхности. QGraphicsScene является частью Каркаса графического представления. QGraphicsScene также предоставляет функциональность, которая позволит вам эффективно определять положение элементов и какие элементы видимы внутри произвольной области сцены. С виджетом QGraphicsView вы можете или отобразить всю сцену, или увеличить и отобразить только часть сцены. Пример: QGraphicsScene scene; scene.addText("Hello, world!"); QGraphicsView view(&scene); view.show(); Заметьте, что QGraphicsScene не имеет собственного графического представления; он только управляет элементами. Для отображения сцены вам необходимо создать виджет QGraphicsView. Чтобы добавить элементы на сцену, вы должны начать с создания объекта QGraphicsScene. Затем у вас есть две возможности: или добавить существующие объекты QGraphicsItem вызвав addItem(), или вы можете вызвать одну из вспомогательных функций addEllipse(), addLine(), addPath(), addPixmap(), addPolygon(), addRect() или addText(), которые возвращают указатель на добавленный элемент. Размеры добавляемых с помощью этих функций элементов относительны к координатной системе элементов, а их положение установлено в (0, 0) в координатах сцены. Затем вы можете отобразить сцену с помощью QGraphicsView. Когда сцена изменяется, (например, когда элемент перемещается или преобразуется) QGraphicsScene вырабатывает сигнал changed(). Чтобы удалить элемент вызовите removeItem(). QGraphicsScene использует алгоритм индексации для эффективного управления положением элементов. По умолчанию используется дерево BSP (Binary Space Partitioning); этот алгоритм удобен для больших сцен, где большинство элементов остаются статичными (т.е. не перемещаются). Вы можете отключить этот индекс вызвав setItemIndexMethod(). Для получения дополнительной информации о доступных алгоритмах индексации смотрите свойство itemIndexMethod. Прямоугольник, ограничивающий сцену, устанавливается с помощью setSceneRect(). Элементы могут быть размещены в любой точке сцены, а размер сцены по умолчанию не ограничен. Прямоугольник сцены используются только для внутреннего использования, поддерживания индекса элементов сцены. Если прямоугольник сцены не установлен, QGraphicsScene будет использовать ограничивающую область всех элементов, возвращаемую itemsBoundingRect(), в качестве прямоугольника сцены. Тем не менее, itemsBoundingRect() относительно затратная по времени функция, так как она оперирует набором информации о положении для каждого элемента сцены. Поэтому вы всегда должны устанавливать прямоугольник сцены при работе с большими сценами. Одной из сильнейших сторон QGraphicsScene является её возможность эффективно определять положение элементов. Даже с миллионами элементов на сцене функции items() могут определять положение элемента в течении нескольких миллисекунд. Есть несколько перегруженных функций для items(): одна находит элементы в определённой позиции, другая находит элементы внутри или в пересечении с полигоном или прямоугольником, и так далее. Список возвращаемых элементов отсортирован в порядке расположения, первым элементом списка будет верхний элемент. Для удобства также есть функция itemAt(), которая возвращает верхний элемент в заданной точке. QGraphicsScene управляет информацией о выделении для сцены. Чтобы выбрать элементы, вызовите setSelectionArea(), а чтобы очистить текущее выделение вызовите clearSelection(). Вызовите selectedItems() чтобы получить список всех выделенных элементов. Обработка и передача событийДругой задачей QGraphicsScene является передача событий от QGraphicsView. Чтобы отправить событие сцены, вам надо создать событие, которое наследует QEvent, а затем отправить его, например, с помощью QApplication::sendEvent(). Функция event() ответственна за распределение событий конкретным элементам. Некоторые распространённые события обрабатываются вспомогательными обработчиками событий. Например, события нажатий кнопок обрабатываются keyPressEvent(), а события нажатия кнопок мыши обрабатываются mousePressEvent(). События клавиатуры доставляются элементу, имеющему фокус. Чтобы установить фокус на элемент, вы можете или вызвать setFocusItem(), передав элемент, который получает фокус, или элемент сам может вызвать QGraphicsItem::setFocus(). Вызовите focusItem() чтобы получить элемент, имеющий фокус в настоящий момент. Для совместимости с виджетами, сцена также поддерживает собственную информацию о фокусе. По умолчанию у сцены нет фокуса, а все события клавиатуры игнорируются. Если вызвана setFocus() или элемент сцены получает фокус, то сцена автоматически получает фокус. Если у сцены есть фокус, hasFocus() вернёт true, а события клавиатуры будут перенаправлены элементу с фокусом, если такой есть. Если сцена теряет фокус (т.е. кто-то вызвал clearFocus()), пока у элемента есть фокус, сцена будет сохранять информацию о фокусе её элемента, и когда сцена вновь получит фокус, она обеспечит, что этот элемент получит фокус. Для эффектов мыши над элементом, QGraphicsScene распределяет события наведения мыши. Если элемент принимает события наведения мыши (смотрите QGraphicsItem::acceptHoverEvents()), он получит событие GraphicsSceneHoverEnter, когда курсор мыши войдет в его область. Когда мышь будет продолжать перемещаться внутри области элемента, QGraphicsScene будет посылать ему события GraphicsSceneHoverMove. Когда мышь покидает область элемента, он получит событие GraphicsSceneHoverLeave. Все события мыши доставляются элементу, владеющему мышью. Элемент становится владельцем мыши если он принимает события мыши (смотрите QGraphicsItem::acceptedMouseButtons()) и получается события нажатия кнопок мыши. Он остаётся владельцем мыши пока он не получит событие освобождения мыши, когда ни одна из кнопок мыши не нажата. Вы можете вызвать mouseGrabberItem() чтобы определить какой элемент является владельцем мыши в настоящий момент. Смотрите также QGraphicsItem и QGraphicsView. Описание типов-членовenum QGraphicsScene::ItemIndexMethodЭто перечисление описывает алгоритм индексирования, который QGraphicsScene предоставляет для управления информацией о положении элементов на сцене.
Смотрите также setItemIndexMethod() и bspTreeDepth. enum QGraphicsScene::SceneLayer
|
Константа | Значение | Описание |
---|---|---|
QGraphicsScene::ItemLayer | 0x1 | Слой элемента. QGraphicsScene отрисовывает все элементы в этом слое, вызывая виртуальную функцию drawItems(). Слой элемента отрисовывается после слоя фона, но перед слоем переднего плана. |
QGraphicsScene::BackgroundLayer | 0x2 | Слой фона. QGraphicsScene отрисовывает фон сцены в этом слое, вызывая виртуальную функцию drawBackground(). Слой фона отрисовывается первым. |
QGraphicsScene::ForegroundLayer | 0x4 | Слой переднего плана. QGraphicsScene отрисовывает слой переднего плана вызывая виртуальную функцию drawForeground(). Слой переднего плана отрисовывается последним. |
QGraphicsScene::AllLayers | 0xffff | Все слои; это значение представляет комбинацию всех трёх слоёв. |
Это перечисление было введено или модифицировано в Qt 4.3.
Тип SceneLayers это определение типа для QFlags<SceneLayer>. Он хранит комбинацию OR (ИЛИ) значений SceneLayer.
Смотрите также invalidate() и QGraphicsView::invalidateScene().
Это свойство содержит кисть фона сцены.
Установите это свойство чтобы изменить цвет фона сцены, его градиент или текстуру. По умолчанию кисть фона равна Qt::NoBrush. Фон отрисовывается перед (позади) элементов.
Пример:
QGraphicsScene scene; QGraphicsView view(&scene); view.show(); // голубой фон scene.setBackgroundBrush(Qt::blue); // градиентный фон QRadialGradient gradient(0, 0, 10); gradient.setSpread(QGradient::RepeatSpread); scene.setBackgroundBrush(gradient);
QGraphicsScene::render() вызывает drawBackground() чтобы отрисовать фон сцены. Для более подробного контроля над тем, как отрисовывается фон, вы можете переопределить drawBackground() в подклассе QGraphicsScene.
Функции доступа:
QBrush | backgroundBrush () const |
void | setBackgroundBrush ( const QBrush & brush ) |
Это свойство содержит глубину дерева индекса BSP QGraphicsScene.
Это свойство эффекта не имеет значения если используется NoIndex.
Это значение определяет глубину дерева BSP QGraphicsScene. Глубина прямо влияет на производительность и использование памяти QGraphicsScene; последняя растёт экспоненциально с глубиной дерева. С оптимальной глубиной дерева QGraphicsScene может мгновенно находить элементы, даже для сцен с тысячами или миллионами элементов. Это также значительно улучшает производительность отрисовки.
По умолчанию значение равно 0, в этом случае Qt будет угадывать разумную глубину дерева, основываясь на его размере, положении и числе элементов в сцене. Если часто изменять эти параметры, вы можете столкнуться с падением производительности, так как QGraphicsScene подстраивает глубину. Вы можете избежать потенциального замедления зафиксировать глубину дерева установив это свойство.
Глубина дерева и размер прямоугольника сцены определяют детальность частей сцены. Размер каждого сегмента сцены определяется следующим алгоритмом:
QSizeF segmentSize = sceneRect().size() / pow(2, depth - 1);
Дерево BSP имеет оптимальный размер когда каждый содержит от 0 до 10 элементов.
Это свойство было введено в Qt 4.3.
Функции доступа:
int | bspTreeDepth () const |
void | setBspTreeDepth ( int depth ) |
Смотрите также itemIndexMethod.
Это свойство содержит шрифт сцены по умолчанию.
Это свойство предоставляет шрифт сцены. Шрифт сцены по умолчанию получает все значения от QApplication::font.
Если шрифт сцены изменяется, или явно через setFont(), или неявно при изменении шрифта приложения, QGraphicsScene сначала посылает себе событие FontChange, а затем он посылает события FontChange всем элементам виджетов верхнего уровня на сцене. Эти элементы ответственны за определение их собственные шрифты от сцены и затем они уведомляют их потомков, которые в свою очередь уведомляют своих потомков и так далее, пока все элементы виджетов не обновят их шрифты.
Изменение шрифта сцены (явно или неявно через QApplication::setFont()) автоматически назначает перерисовку всей сцены.
Это свойство было введено в Qt 4.4.
Функции доступа:
QFont | font () const |
void | setFont ( const QFont & font ) |
Смотрите также QWidget::font, QApplication::setFont(), palette и style().
Это свойство содержит кисть для переднего плана сцены.
Установите это свойство чтобы изменить цвет переднего плана сцены, его градиент или текстуру.
Передний план отрисовывается после (впереди) элементов. По умолчанию кисть переднего плана равна Qt::NoBrush (т.е. передний план не отрисовывается).
Пример:
QGraphicsScene scene; QGraphicsView view(&scene); view.show(); // белый полупрозрачный передний план scene.setForegroundBrush(QColor(255, 255, 255, 127)); // передний план в виде сетки scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));
QGraphicsScene::render() вызывает drawForeground() для отрисовки переднего плана сцены. Для более подробного контроля над тем, как отрисовывается передний план, вы можете переопределить drawForeground() в подклассе QGraphicsScene.
Функции доступа:
QBrush | foregroundBrush () const |
void | setForegroundBrush ( const QBrush & brush ) |
Это свойство содержит метод индексирования элементов.
QGraphicsScene применяет алгоритм индексирования сцены для ускорения функций обнаружения элементов, таких как items() и itemAt(). Индексирование наиболее эффективно для статичных сцен (т.е. сцен, где большинство элементов не перемещается). Для динамических сцен или сцен с большим числом анимированных элементов, расчёт индекса может перевесить ускорение поиска.
В общих случаях метод индексирования по умолчанию BspTreeIndex работает нормально. Если ваша сцена используется много анимации и вы столкнулись с замедлением, вы можете отключить индексирование вызвав setItemIndexMethod(NoIndex).
Функции доступа:
ItemIndexMethod | itemIndexMethod () const |
void | setItemIndexMethod ( ItemIndexMethod method ) |
Смотрите также bspTreeDepth.
Это свойство содержит палитру сцены по умолчанию.
Это свойство предоставляет палитру сцены. Палитра сцены по умолчанию получает все значения от QApplication::palette.
Если палитра сцены изменяется, или явно через setPalette(), или неявно при изменении палитры приложения, QGraphicsScene сначала посылает себе событие PaletteChange, а затем он посылает события PaletteChange всем элементам виджетов верхнего уровня на сцене. Эти элементы ответственны за определение их собственной палитры от сцены и затем они уведомляют их потомков, которые в свою очередь уведомляют своих потомков и так далее, пока все элементы виджетов не обновят свои палитры.
Изменение палитры сцены (явно или неявно через QApplication::setPalette()) автоматически назначает перерисовку всей сцены.
Это свойство было введено в Qt 4.4.
Функции доступа:
QPalette | palette () const |
void | setPalette ( const QPalette & palette ) |
Смотрите также QWidget::palette, QApplication::setPalette(), font и style().
Это свойство содержит прямоугольник сцены: ограничивающий прямоугольник сцены.
Прямоугольник сцены определяет протяжённость сцены. Он в основном используется QGraphicsView для определения области прокрутки вида по умолчанию и QGraphicsScene для управлением индексацией элементов.
Если он не установлен, или установлен равным пустому QRectF, sceneRect() будет возвращать наибольший прямоугольник, ограничивающий все элементы на сцене с тех пор как сцена была создана (т.е. прямоугольник будет расти при добавлении или перемещении элементов на сцене, но никогда не уменьшится).
Функции доступа:
QRectF | sceneRect () const |
void | setSceneRect ( const QRectF & rect ) |
void | setSceneRect ( qreal x, qreal y, qreal w, qreal h ) |
Смотрите также width(), height() и QGraphicsView::sceneRect.
Это свойство определяет, должен ли щелчок по фону сцены убирать фокус.
В QGraphicsScene с stickyFocus равным true, фокус останется неизменным когда пользователь щёлкнет по фону сцены или по элементу, который не принимает фокус. В противном случае фокус будет убран.
По умолчанию это свойство равно false.
Фокус изменяется в результате ответа на нажатие кнопки мыши. Вы можете переопределить mousePressEvent() в подклассе QGraphicsScene чтобы переключать это свойство в зависимости от того, куда щёлкнул пользователь.
Это свойство было введено в Qt 4.6.
Функции доступа:
bool | stickyFocus () const |
void | setStickyFocus ( bool enabled ) |
Смотрите также clearFocus() и setFocusItem().
Создаёт объект QGraphicsScene. Параметр parent передаётся конструктору QObject.
Создаёт объект QGraphicsScene, используя sceneRect в качестве прямоугольника сцены. Параметр parent передаётся конструктору QObject.
Смотрите также sceneRect.
Создаёт объект QGraphicsScene используя прямоугольник, указанный координатами (x, y) и заданными шириной width и высотой height в качестве прямоугольника сцены. Параметр parent передаётся конструктору QObject.
Смотрите также sceneRect.
Убирает и удаляет все элементы в объекте сцены перед его уничтожением. Объект сцены удаляется из глобального списка сцен приложения и изо всех связанных представлений.
Возвращает активную в текущий момент панель, или 0, если в текущий момент нет активной панели.
Эта функция была введена в Qt 4.6.
Смотрите также QGraphicsScene::setActivePanel().
Возвращает текущее активное окно или 0, если в настоящий момент нет текущего окна.
Эта функция была введена в Qt 4.4.
Смотрите также QGraphicsScene::setActiveWindow().
Создаёт и добавляет эллипс на сцену и возвращает указатель на него. Геометрия эллипса определяется прямоугольником rect, а его перо и кисть устанавливаются равными pen и brush.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addLine(), addPath(), addPixmap(), addRect(), addText(), addItem() и addWidget().
Эта вспомогательная функция эквивалента вызову addEllipse(QRectF(x, y, w, h), pen, brush).
Эта функция была введена в Qt 4.3.
Добавляет или перемещает элемент item и всех его потомков на данную сцену. Эта сцена становится владельцем элемента item.
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Если элемент уже находится на другой сцене, то он сначала будет удалён со старой сцены, а затем добавлен к этой сцене в качестве элемента верхнего уровня.
QGraphicsScene пошлёт уведомление ItemSceneChange элементу item когда он будет добавляться на сцену. Если элемент не в момент добавления не принадлежит какой-либо сцене, только одно уведомление будет послано. Если он принадлежит сцене (т.е. он перемещается на эту сцену), QGraphicsScene пошлёт дополнительное уведомление, когда элемент будет удалён с его предыдущей сцены.
Если элемент это панель, сцена активна и нет активной панели на сцене, тогда элемент будет активирован.
Смотрите также removeItem(), addEllipse(), addLine(), addPath(), addPixmap(), addRect(), addText(), addWidget() и Сортировка.
Создаёт и добавляет линию на сцену и возвращает указатель на неё. Геометрия линии определяется линией line, а его перо устанавливается равным pen.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addPath(), addPixmap(), addRect(), addText(), addItem() и addWidget().
Эта вспомогательная функция эквивалента вызову addLine(QLineF(x1, y1, x2, y2), pen).
Эта функция была введена в Qt 4.3.
Создаёт и добавляет путь на сцену и возвращает указатель на него. Геометрия пути определяется путём path, а его перо и кисть устанавливаются равными pen и brush.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPixmap(), addRect(), addText(), addItem() и addWidget().
Создаёт и добавляет растровое изображение на сцену и возвращает указатель на него. Растровое изображение определяется pixmap.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() и addWidget().
Создаёт и добавляет полигон на сцену и возвращает указатель на него. Геометрия полигона определяется полигоном polygon, а его перо и кисть устанавливаются равными pen и brush.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() и addWidget().
Создаёт и добавляет прямоугольник на сцену и возвращает указатель на него. Геометрия прямоугольника определяется прямоугольником rect, а его перо и кисть устанавливаются равными pen и brush.
Заметьте, что геометрия элемента предоставляется в координатах элемента, а его позиция устанавливается в (0, 0). Например, если добавляется прямоугольник QRect(50, 50, 100, 100), его верхний левый угол будет в точке (50, 50) относительно его центра в системе координат сцены.
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPixmap(), addPixmap(), addText(), addItem() и addWidget().
Эта вспомогательная функция эквивалента вызову addRect(QRectF(x, y, w, h), pen, brush).
Эта функция была введена в Qt 4.3.
Создаёт и добавляет QGraphicsSimpleTextItem на сцену и возвращает указатель на него. Текстовая строка устанавливается равной text, а его шрифт устанавливается равным font.
Положение элемента устанавливается равной (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addItem() и addWidget().
Создаёт и добавляет текст на сцену и возвращает указатель на него. Текстовая строка устанавливается равной text, а его шрифт устанавливается равным font.
Положение элемента устанавливается равной (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Смотрите также addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addItem() и addWidget().
Создаёт нового посредника QGraphicsProxyWidget для виджета widget, добавляет его на сцену и возвращает указатель на него. wFlags определяет флаги окна по умолчанию для внедренного посредника виджета.
Положение элемента устанавливается равной (0, 0).
Если элемент видим (т.е. QGraphicsItem::isVisible() возвращает true), QGraphicsScene выработает сигнал changed(), как только управление вернётся в цикл обработки событий.
Заметьте, что виджеты с установленным свойством Qt::WA_PaintOnScreen и виджеты, которые оборачивают внешнее приложение или контролёр, не поддерживаются. Примерами являются QGLWidget и QAxWidget.
Смотрите также addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addText(), addSimpleText() и addItem().
Этот слот продвигает сцену на один шаг вызывая QGraphicsItem::advance() для всех элементов на сцене. Это происходит в две фазы: в первой фазе все элементы получают уведомление что сцена собирается измениться, а во второй фазе всем элементам сообщается что они могут перемещаться. В первой фазе QGraphicsItem::advance() вызывается с 0 в качестве аргумента, а 1 передаётся во второй фазе.
Смотрите также QGraphicsItem::advance(), QGraphicsItemAnimation и QTimeLine.
Этот сигнал вырабатывается QGraphicsScene когда управление возвращается в цикл обработки событий при наличии изменений содержимого сцены. Параметр region содержит список прямоугольников сцены, который показывает изменённые области.
Смотрите также QGraphicsView::updateScene().
Убирает и удаляет все элементы на сцене, но в противном случает, оставляет сцену неизменной.
Эта функция была введена в Qt 4.4.
Смотрите также addItem().
Убирает фокус со сцены. Если у какого-либо элемента был фокус при вызове этой функции, то он его потеряет и получит его снова когда сцена вернёт себе фокус.
Сцена, у которой нет фокуса, игнорирует события нажатия клавиш.
Смотрите также hasFocus(), setFocus() и setFocusItem().
Очищает текущее выделение.
Смотрите также setSelectionArea() и selectedItems().
Возвращает список элементов, которые сталкиваются с элементом item. Столкновения определяются вызовом QGraphicsItem::collidesWithItem(); тип столкновения определяется режимом mode. По умолчанию возвращаются все элементы, чьи фигуры пересекаются с элементом item или содержатся в фигуре элемента item.
Элементы возвращаются в порядке убывания размещения (т.е. первый элемент в списке будет тот, который расположен выше всех, а последний - расположенный в самом низу).
Смотрите также items(), itemAt(), QGraphicsItem::collidesWithItem() и Сортировка.
Этот обработчик события event может быть переопределён в производном классе чтобы получать события вызова контекстного меню. Реализация по умолчанию передаёт это событие верхнему элементу в точке события, который принимает события контекстного меню. Если ни один элемент в этой точке не принимает событие контекстного меню, оно игнорируется.
Смотрите также QGraphicsItem::contextMenuEvent().
Группирует все элементы в items в новую группу QGraphicsItemGroup и возвращает указатель на эту группу. Группа создаётся с общим предком items в качестве родителя и располагается в точке (0, 0). Элементы меняют родителя на эту группу и их положения и преобразования отображаются на группу. Если список items пуст, эта функция вернёт пустой элемент QGraphicsItemGroup верхнего уровня.
QGraphicsScene владеет элементом группы; вам не надо удалять его. Для демонтирования (разборки) группы, вызовите destroyItemGroup().
Смотрите также destroyItemGroup() и QGraphicsItemGroup::addToGroup().
Меняет родителя всех элементов в группе group на родительский элемент группы group, затем убирает группу group со сцены и, наконец, удаляет её. Положения и преобразования элементов переносятся с группы на родителя группы.
Смотрите также createItemGroup() и QGraphicsItemGroup::removeFromGroup().
Этот обработчик события event может быть переопределён чтобы получать события начала перетаскивания для этой сцены.
Реализация по умолчанию принимает событие и подготавливает сцену для принятия событий перетаскивания.
Смотрите также QGraphicsItem::dragEnterEvent(), dragMoveEvent(), dragLeaveEvent() и dropEvent().
Этот обработчик события event может быть переопределён чтобы получать события окончания перетаскивания для этой сцены.
Смотрите также QGraphicsItem::dragLeaveEvent(), dragEnterEvent(), dragMoveEvent() и dropEvent().
Этот обработчик события event может быть переопределён чтобы получать события перетаскивания для этой сцены.
Смотрите также QGraphicsItem::dragMoveEvent(), dragEnterEvent(), dragLeaveEvent() и dropEvent().
Отрисовывает фон сцены с использованием painter перед отрисовкой любого элемента или переднего плана. Переопределите эту функцию для предоставления собственного фона сцены.
Все рисования производятся в координатахсцены. Параметр rect это отображаемый прямоугольник.
Если все что вы хотите это определить цвет, текстуру или градиент для фона, вместо этого вы можете вызвать setBackgroundBrush().
Смотрите также drawForeground() и drawItems().
Отрисовывает передний план сцены с использованием painter после отрисовки фона и всех элементов. Переопределите эту функцию для предоставления собственного переднего плана сцены.
Все рисования производятся в координатахсцены. Параметр rect это отображаемый прямоугольник.
Если все что вы хотите это определить цвет, текстуру или градиент для переднего плана, вместо этого вы можете вызвать setForegroundBrush().
Смотрите также drawBackground() и drawItems().
Этот обработчик события event может быть переопределён чтобы получать события бросания для этой сцены.
Смотрите также QGraphicsItem::dropEvent(), dragEnterEvent(), dragMoveEvent() и dragLeaveEvent().
Переопределено от QObject::event().
Обрабатывает событие event, и передаёт его соответствующим обработчикам событий.
Помимо вызова вспомогательного обработчика событий, эта функция ответственна за преобразование событий перемещений мыши в события наведения мыши в случае когда нет элемента, являющегося владельцем мыши. События наведения мыши доставляются прямо элементам; для них нет вспомогательных функций.
В отличие от QWidget, QGraphicsScene не имеет вспомогательных функций enterEvent() и leaveEvent(). Вместо них используйте эту функцию для получения этих событий.
Смотрите также contextMenuEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), focusInEvent() и focusOutEvent().
Переопределено из QObject::eventFilter().
QGraphicsScene фильтрует события от QApplication для определения изменения палитры и шрифта.
Этот обработчик события focusEvent может быть переопределён в производном классе чтобы получать события получения фокуса.
Реализация по умолчанию устанавливает фокус сцене, а затем элементу, последнему владевшему фокусом.
Смотрите также QGraphicsItem::focusOutEvent().
Когда сцена активна, эта функция возвращает текущий элемент сцены с фокусом, или 0, если в текущий момент нет элемента с фокусом. Когда сцена не активна, эта функция вернёт элемент, который получит фокус, когда сцена станет активной.
Элемент с фокусом получает события ввода с клавиатуры когда сцена получает событие нажатия клавиши.
Смотрите также setFocusItem(), QGraphicsItem::hasFocus() и isActive().
Ищет новый виджет для передачи фокуса клавиатуры, который подходит для Tab и Shift+Tab, и возвращает true если он может найти новый виджет или false если нет. Если next равно true, эта функция ищет вперёд; если next равно false, она ищет в обратном направлении.
Вы можете переопределить эту функцию в подклассе от QGraphicsScene чтобы предоставить точный контроль над передачей фокуса кнопкой Tab внутри вашей сцены. Реализация по умолчанию основана на цепочке передачи фокуса, определённой QGraphicsWidget::setTabOrder().
Эта функция была введена в Qt 4.4.
Этот обработчик события focusEvent может быть переопределён в производном классе чтобы получать события потери фокуса.
Реализация по умолчанию убирает фокус с любого элемента, имеющего фокус, а затем убирает фокус со сцены.
Смотрите также QGraphicsItem::focusInEvent().
Возвращает true, если у сцены есть фокус; в противном случае возвращает false. Если у сцены есть фокус, она будет перенаправлять события клавиатуры из QKeyEvent любому элементу у которого есть фокус.
Смотрите также setFocus() и setFocusItem().
Эта вспомогательная функция эквивалентна вызову sceneRect().height().
Смотрите также width().
Этот обработчик события helpEvent может быть переопределён в производном классе чтобы получать события вызова справки. Эти события имеют тип QEvent::ToolTip, которые создаются при запросе всплывающей подсказки.
Реализация по умолчанию показывает всплывающую подсказку верхнего элемента, т.е. элемента с наибольшей координатой Z в положении курсора мыши. Если у элемента нет всплывающей подсказки, то она ничего не делает.
Смотрите также QGraphicsItem::toolTip() и QGraphicsSceneHelpEvent.
Этот обработчик события event может быть переопределён чтобы получать события метода ввода для этой сцены.
Реализация по умолчанию передаёт событие focusItem(). Если в настоящий момент нет элемента с фокусом или текущий элемент с фокусом не принимает методы ввода, то эта функция ничего не делает.
Смотрите также QGraphicsItem::inputMethodEvent().
Этот метод используется для запроса набора свойств о поддержке сценой сложных операций методов ввода, таких как поддержка обтекающего текста и обратные преобразования.
Параметр query указывает какое свойство запрашивается.
Смотрите также QWidget::inputMethodQuery().
Делает недействительными и планирует перерисовку слоёв layers внутри прямоугольника rect. Любое кэшированное содержимое для слоёв layers признаётся негодным и перерисовывается.
Вы можете вызывать эту функцию чтобы сообщать QGraphicsScene об изменениях фона или переднего плана сцены. Эта функция обычно используется для сцен с фоном, основанным на плитках, чтобы сообщать об изменениях когда QGraphicsView включает CacheBackground.
Пример:
QRectF TileScene::rectForTile(int x, int y) const { // Возвращает прямоугольник для плитки в точке (x, y). return QRectF(x * tileWidth, y * tileHeight, tileWidth, tileHeight); } void TileScene::setTile(int x, int y, const QPixmap &pixmap) { // Устанавливает или замещает растровым изображением плитку в точке (x, y). if (x >= 0 && x < numTilesH && y >= 0 && y < numTilesV) { tiles[y][x] = pixmap; invalidate(rectForTile(x, y), BackgroundLayer); } } void TileScene::drawBackground(QPainter *painter, const QRectF &exposed) { // Отрисовывает все плитки, которые пересекаются с отображаемой областью. for (int y = 0; y < numTilesV; ++y) { for (int x = 0; x < numTilesH; ++x) { QRectF rect = rectForTile(x, y); if (exposed.intersects(rect)) painter->drawPixmap(rect.topLeft(), tiles[y][x]); } } }
Заметьте, что QGraphicsView пока поддерживает кэширование только фона (смотрите QGraphicsView::CacheBackground). Эта функция эквивалента вызову update() если передается любой слой, кроме BackgroundLayer.
Смотрите также QGraphicsView::resetCachedContent().
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову invalidate(QRectF(x, y, w, h), layers);
Эта функция была введена в Qt 4.3.
Возвращает true если сцена активна (например, она просматривается хотя бы одним активным QGraphicsView); в противном случае возвращает false.
Эта функция была введена в Qt 4.6.
Смотрите также QGraphicsItem::isActive() и QWidget::isActiveWindow().
Возвращает верхний видимый элемент в указанной точке position или 0, если в этой точке нет элементов.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также items(), collidingItems() и Сортировка.
Это перегруженная функция.
Возвращает верхний видимый элемент в указанной точке (x, y) или 0, если в этой точке нет элементов.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта вспомогательная функция эквивалента вызову itemAt(QPointF(x, y), deviceTransform).
Эта функция была введена в Qt 4.6.
Возвращает список элементов на сцене в порядке убывания размещения.
Смотрите также addItem(), removeItem() и Сортировка.
Возвращает упорядоченный список элементов на сцене. order определяет порядок размещения.
Смотрите также addItem(), removeItem() и Сортировка.
Возвращает список всех видимых элементов, которые, в зависимости от режима mode, находятся в указанной точке pos, отсортированный с использованием порядка order.
Значение по умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с pos.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также itemAt() и Сортировка.
Это перегруженная функция.
Возвращает список всех видимых элементов, которые, в зависимости от режима mode, или содержатся в, или пересекаются с прямоугольником, определённым x, y, w и h, отсортированный с использованием порядка order.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Это перегруженная функция.
Возвращает список всех видимых элементов, которые, в зависимости от режима mode, или содержатся в, или пересекаются с прямоугольником rect, отсортированный с использованием порядка order.
Значение по умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в прямоугольнике rect.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также itemAt() и Сортировка.
Это перегруженная функция.
Возвращает все видимые элементы, которые, в зависимости от режима mode, или содержатся в, или пересекаются с полигоном polygon, отсортированный с использованием порядка order.
Значение по умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в полигоне polygon.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также itemAt() и Сортировка.
Это перегруженная функция.
Возвращает все видимые элементы, которые, в зависимости от режима mode, или содержатся в, или пересекаются с путём path, отсортированный с использованием порядка order.
Значение по умолчанию для mode равно Qt::IntersectsItemShape; возвращаются все элементы, чья точная форма пересекается с или содержится в пути path.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также itemAt() и Сортировка.
Вычисляет и возвращает ограничивающий прямоугольник всех элементов на сцене. Это функция перебирает все элементы, и поэтому она может работать медленно для больших сцен.
Смотрите также sceneRect().
Этот обработчик события keyEvent может быть переопределён в производном классе чтобы получать события нажатия клавиш. Реализация по умолчанию передаёт событие элементу, имеющему фокус в текущий момент.
Смотрите также QGraphicsItem::keyPressEvent() и focusItem().
Этот обработчик события keyEvent может быть переопределён в производном классе чтобы получать события отпускания клавиш. Реализация по умолчанию передаёт событие элементу, имеющему фокус в текущий момент.
Смотрите также QGraphicsItem::keyReleaseEvent() и focusItem().
Этот обработчик события mouseEvent может быть переопределён чтобы получать события двойного щелчка мыши для этой сцены.
Если пользователь щёлкнет два раза на сцене, он сначала получит событие нажатия кнопки мыши, затем отпускания кнопки мыши (т.е. клик), затем событие двойного клика и, наконец, событие отпускания кнопки мыши. Если событие двойного нажатия доставляется разным элементам вместо того, кто получил первое событие нажатия и отпускания, оно будет доставлено как событие нажатия. Тем не менее, событие тройного клика не будет доставлено как двойной клик в данном случае.
Реализация по умолчанию похожа на mousePressEvent().
Смотрите также QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseReleaseEvent() и QGraphicsItem::setAcceptedMouseButtons().
Возвращает элемент, владеющий мышью в текущий момент, или 0, если такого элемента нет. Владелец мыши, это элемент, который получает все события мыши, посланные этой сцене.
Элемент становится владельцем мыши когда он получает и принимает событие нажатия мыши и остаётся владельцем пока одно из следующих событий не произойдёт:
Если элемент теряет владение мышкой, сцена будет игнорировать события мышки пока другой элемент не завладеет мышкой (т.е. пока другой элемент не получит событие нажатия мыши).
Этот обработчик события mouseEvent может быть переопределён чтобы получать события перемещения мыши для этой сцены.
Реализация по умолчанию зависит от текущего состояния владельца мыши. Если есть владелец мыши, то событие посылается ему. Если есть элементы, которые принимают события наведения мыши в текущей точке, это событие переводится в событие наведения мышки и принимается; в противном случае оно игнорируется.
Смотрите также QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseReleaseEvent(), QGraphicsItem::mouseDoubleClickEvent() и QGraphicsItem::setAcceptedMouseButtons().
Этот обработчик события mouseEvent может быть переопределён чтобы получать события нажатия мыши для этой сцены.
Реализация по умолчанию зависит от состояния сцены. Если есть владелец мыши, то событие посылается ему. В противном случае, оно передаётся верхнему элементу в точке события, который принимает события контекстного меню и этот элемент становится новым владельцем мышки.
Если в этой точке сцены нет элементов или область выделения была сброшена, любой элемент теряет фокус ввода и это событие игнорируется.
Смотрите также QGraphicsItem::mousePressEvent() и QGraphicsItem::setAcceptedMouseButtons().
Этот обработчик события mouseEvent может быть переопределён чтобы получать события отпускания мыши для этой сцены.
Реализация по умолчанию зависит от текущего состояния владельца мыши. Если нет владельца мыши, то это событие игнорируется. В противном случае, если есть владелец мышки, то событие пересылается ему. Если это отпускание мышки представляет последнюю нажимаемую кнопку мышки, то владелец мышки теряет над ней контроль.
Смотрите также QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseDoubleClickEvent() и QGraphicsItem::setAcceptedMouseButtons().
Убирает item и всех его потомков со сцены. Владение над элементом item передаётся вызывающему (т.е. QGraphicsScene не будет удалять item при своём уничтожении).
Смотрите также addItem().
Отображает прямоугольник сцены source в target используя painter. Эта функция полезна для записи содержимого сцены в устройство рисования, такое как QImage (например, сделать снимок экрана), или для печати в QPrinter. Например:
QGraphicsScene scene; scene.addItem(... ... QPrinter printer(QPrinter::HighResolution); printer.setPaperSize(QPrinter::A4); QPainter painter(&printer); scene.render(&painter);
Если source это пустой прямоугольник, эта функция будет использовать sceneRect() для определения что ей отрисовывать. Если target это пустой прямоугольник, то будут использованы размеры устройства рисования painter.
Содержимое прямоугольника источника будет преобразовано в соответствии с aspectRatioMode для размещения в прямоугольнике назначения. По умолчанию соотношение сторон сохраняется, а source масштабируется чтобы размещаться в target.
Смотрите также QGraphicsView::render().
Этот сигнал вырабатывается QGraphicsScene при изменении размера сцены. Параметр rect это новый прямоугольник сцены.
Смотрите также QGraphicsView::updateSceneRect().
Возвращает список всех выделенных в настроящий момент элементов. Элементы возвращаются в произвольном порядке.
Смотрите также setSelectionArea().
Возвращает область выделения, которая была установлена с помощью setSelectionArea() или пустой QPainterPath если область выделения не была установлена.
Смотрите также setSelectionArea().
Этот сигнал вырабатывается QGraphicsScene при изменении выделения. Вы можете вызвать selectedItems() чтобы получить список всех выделенных элементов.
Выделение изменяется в случаях если элемент выделяется или с него снимается выделение, область выделения устанавливается, очищается или изменяется, если заранее выделенные элементы добавляются на сцену или выделенный элемент убирается со сцены.
QGraphicsScene вырабатывает этот сигнал только один раз для операций выделения группы. Например, если вы установите область выделения, выберите или снимете выделение с QGraphicsItemGroup, или вы добавите на или уберёте со сцены родительский элемент, содержащий несколько выделенных элементов, selectionChanged() будет выработан только один раз после полного завершения операции (вместо по одному сигналу для каждого элемента).
Эта функция была введена в Qt 4.3.
Смотрите также setSelectionArea(), selectedItems() и QGraphicsItem::setSelected().
Посылает событие event элементу item через возможные фильтры событий.
Событие посылается только если элемент активен.
Возвращает false если событие было отфильтровано или элемент отключён. В противном случае возвращает значение, которое было возвращено обработчиком события.
Эта функция была введена в Qt 4.6.
Смотрите также QGraphicsItem::sceneEvent() и QGraphicsItem::sceneEventFilter().
Активирует item, который должен быть элементом на сцене. Вы можете передать 0 для item, в этом случае QGraphicsScene деактивирует любую активную в данный момент панель.
Если сцена в настоящий момент не активна, item останется неактивным до тех пор пока сцена не станет активной (или, если item равен 0, никакой элемент не будет активирован).
Эта функция была введена в Qt 4.6.
Смотрите также activePanel(), isActive() и QGraphicsItem::isActive().
Активирует widget, который должен быть виджетом этой сцены. Вы также можете передать 0 вместо widget, и в этом случае QGraphicsScene деактивирует любой активный в данный момент виджет.
Эта функция была введена в Qt 4.4.
Смотрите также activeWindow() и QGraphicsWidget::isActiveWindow().
Устанавливает фокус сцене, посылая сцене QFocusEvent, передавая focusReason в качестве причины. Если сцена получает фокус после того как ранее потеряла его и у элемента сцены был фокус, то этот элемент снова получит фокус с focusReason в качестве причины.
Если у сцены уже есть фокус, то эта функция ничего не делает.
Смотрите также hasFocus(), clearFocus() и setFocusItem().
Устанавливает фокус элементу сцены item с причиной фокуса focusReason после удаления фокуса с любого элемента, у которого он был.
Если item равен 0, или если он или не принимает фокус (т.е. у него не включён флаг QGraphicsItem::ItemIsFocusable), или он невидим или отключён, то эта функция только удаляет фокус с элемента, обладающего фокусом в текущий момент.
Если элемент не равен 0 и у сцены в настоящий момент нет фокуса (т.е. hasFocus() возвращает false), то эта функция вызовет setFocus() автоматически.
Смотрите также focusItem(), hasFocus() и setFocus().
Устанавливает область выделения равной path. Все элементы внутри этой области немедленно выделяются, а элементы за её пределами теряют выделение. Вы можете получить список все выделенных элементов вызвав selectedItems().
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Чтобы элемент был выделен, он должен быть помечен как выделяемый (QGraphicsItem::ItemIsSelectable).
Эта функция была введена в Qt 4.6.
Смотрите также clearSelection() и selectionArea().
Это перегруженная функция.
Устанавливает область выделения равной path используя mode для определения попадают ли элементы в область выделения.
deviceTransform это преобразование, которое применяется к виду и должно быть предоставлено если сцена содержит элементы, которые игнорируют преобразования.
Эта функция была введена в Qt 4.6.
Смотрите также clearSelection() и selectionArea().
Устанавливает или заменяет стиль сцены на style и меняет родителя стиля на эту сцену. Любой предыдущий назначенный стиль удаляется. Стиль сцены по умолчанию равен QApplication::style() и служит как стиль по умолчанию для всех элементов QGraphicsWidget на сцене.
Изменение стиля или явно с помощью вызова данной функции, или неявно с помощью QApplication::setStyle() будет автоматически приводить к обновлению стиля для все виджетов на сцене, у которых нет явно назначенного стиля.
Если style равен 0, QGraphicsScene вернётся к QApplication::style().
Эта функция была введена в Qt 4.4.
Смотрите также style().
Возвращает стиль сцены или тоже самое что и QApplication::style() если у сцены нет явно назначенного стиля.
Эта функция была введена в Qt 4.4.
Смотрите также setStyle().
Планирует перерисовку области сцены rect.
Смотрите также sceneRect() и changed().
Это перегруженная функция.
Эта вспомогательная функция эквивалента вызову update(QRectF(x, y, w, h));
Эта функция была введена в Qt 4.3.
Возвращает список всех видов, отображающих эту сцену.
Смотрите также QGraphicsView::scene().
Этот обработчик события wheelEvent может быть переопределён чтобы получать события колеса мыши для этой сцены.
По умолчанию это событие доставляется верхнему видимому элементу под курсором. Если оно игнорируется, то событие передаётся элементу ниже и так далее, до тех пор, пока оно либо не будет принято, либо не дойдёт до сцены. Если ни один элемент не принял событие, то оно игнорируется.
Смотрите также QGraphicsItem::wheelEvent().
Эта вспомогательная функция эквивалентна вызову sceneRect().width().
Смотрите также height().
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |