Как правильно реализовать структуру приложения PyQt5

Нужен совет.

Собираюсь написать приложение. Если коротко в нем должна быть возможность чертить прямоугольники, круги, точки... Для этой задачи подходит QPainter.

Приложение будет большим, поэтому я решил использовать QtDesigner, ведь в нем гораздо легче расставлять виджеты.

И вот я не могу понять как в QtDesigner добавить в окно QPainter? Его нет среди предлагаемых виджетов.

Как реализовать задумку? Не хочется добавлять QPainter в коде, потому что было бы удобно видеть весь вид приложения сразу в QtDesigner.


Ответы (2 шт):

Автор решения: S. Nick

Класс, который предоставляет Qt Designer, не является виджетом, поэтому я рекомендую вам не изменять его и не реализовывать там логику, так как у вас будет несколько проблем, лучше всего создать класс, который наследует соответствующий виджет в соответствии с шаблоном и использовать класс Qt Designer, чтобы заполнить его. Данный класс, производный от Python object type.

QPainter предоставляет высокооптимизированные функции для выполнения большинства программ графического интерфейса для рисования. QPainter может работать с любым объектом, который наследует класс QPaintDevice.

Класс QPaintDevice - это базовый класс объектов, которые можно рисовать с помощью QPainter.

Рассмотрим например класс QWidget - это базовый класс всех объектов пользовательского интерфейса.

введите сюда описание изображения

→ Ссылка
Автор решения: Maxim Timakov

Предлагаю использовать QGraphicsView + QGraphicsScene

Расширение классов-наследников QGraphicsItem позволит Вам определить поведение нужных примитивов.

→ Ссылка