У меня есть главное окно с несколькими виджетами, каждый из которых нуждается в собственной графике.Я хотел бы использовать QPainter для рисования на них фигур, линий и т. Д., Но только после определенного события, например нажатия кнопки.
Проблема в том, что если я просто создаю QPainter в любой функции, он не будет работать:
QPainter::setPen: Painter not active
Методы QPainter могут вызываться только внутри paintEvent(QPaintEvent *)
функции!Это вызывает следующие проблемы:
Я должен получить свои собственные классы для всех виджетов, на которых я хотел бы рисовать, поэтому я не могу использовать конструктор для размещения своих виджетов.Это может расстроить большое количество виджетов.
Виджеты перерисовывают себя после каждого события рисования окна, например, перемещения его или перемещения других окон перед ним.Я много рисую в этих виджетах, поэтому в этих случаях они будут заметно мигать.
Есть ли лучший и более простой способ решить эту проблему?Я начал думать о том, чтобы просто отображать изображения и заново создавать эти изображения только при нажатии определенных кнопок.Я сомневаюсь, что это самое элегантное решение ...