Шаг 206.
Библиотека PyQt5.
Графическая сцена. Класс QGraphicsScene: сцена. Прочие методы и сигналы
На этом шаге мы перечислим наиболее важные методы и сигналы.
Помимо рассмотренных ранее, класс QGraphicsScene поддерживает следующие методы (здесь приведены только основные - полный их список доступен на странице
https://doc.qt.io/qt-5/qgraphicsscene.html):
- isActive () - возвращает значение True, если сцена отображается на экране с помощью какого-либо представления, и False - в противном случае;
- views () - возвращает список с представлениями (экземпляры класса QGraphicsView), в которых выводится сцена. Если сцена вообще не выводится на экран, возвращается пустой список;
- mouseGrabberItem () - возвращает ссылку на объект, который владеет мышью, или None, если такого объекта нет;
- render () - позволяет вывести содержимое сцены на устройство рисования или принтер. Формат метода:
render(<QPainter>[, target=QRectF()][, source=QRectF()][,
mode=KeepAspectRatio])
Параметр target задает координаты и размеры устройства рисования, а параметр source - координаты и размеры прямоугольной области на сцене. Если параметры не указаны,
то используются размеры устройства рисования и сцены. В параметре mode, задающем режим изменения размеров графики при выводе, могут быть указаны следующие атрибуты класса
QtCore.Qt:
- IgnoreAspectRatio (или 0) - изменяет размеры без сохранения пропорций сторон;
- KeepAspectRatio (или 1) - изменяет размеры с сохранением пропорций сторон. При этом часть области на устройстве рисования может оказаться незаполненной;
- KeepAspectRatioByExpanding (или 2) - изменяет размеры с сохранением пропорций сторон. При этом часть выводимой графики может выйти за пределы области на устройстве рисования;
- invalidate () - вызывает перерисовку указанных слоев внутри прямоугольной области на сцене. Форматы метода:
invalidate(<X>, <Y>, <Ширина>, <Высота>[, layers=AllLayers])
invalidate([rect=QRectF()][, layers=AllLayers])
В параметре layers, задающем слои, которые требуется перерисовать, могут быть указаны следующие атрибуты класса QGraphicsScene:
- ItemLayer (или l) - слой объекта;
- BackgroundLayer (или 2) - слой заднего плана;
- ForegroundLayer (или 4) - слой переднего плана;
- AllLayers (или 65535) - все слои. Вначале отрисовывается слой заднего плана, затем - слой объекта и в конце - слой переднего плана.
Первый формат метода является слотом;
- update () - вызывает перерисовку указанной прямоугольной области сцены. Форматы метода:
update(<X>, <Y>, <Ширина>, <Высота>)
update([rect=QRectF()])
Второй формат метода является слотом.
Класс QGraphicsScene поддерживает следующие сигналы:
- changed (<Список областей>) - генерируется при изменении сцены. Внутри обработчика через параметр доступен список с экземплярами класса QRectF, представляющими изменившиеся области сцены;
- sceneRectChanged (<QRectF>) - генерируется при изменении размеров сцены. Внутри обработчика через параметр доступен экземпляр класса QRectF с новыми координатами и размерами сцены;
- selectionChanged () - генерируется при изменении выделения объектов;
- focusItemChanged (<QGraphicItem>, <QGraphicItem>, <Причина изменения фокуса>) - генерируется при изменении фокуса клавиатурного ввода. Через параметры доступны объект, получивший фокус ввода,
объект, потерявший фокус ввода, и причина изменения фокуса (см. 61 шаг).
Со следующего шага мы начнем рассматривать отображение сцены.
Предыдущий шаг
Содержание
Следующий шаг