Я хочу разработать настольное приложение с QML.Приложение предоставляет некоторые функции рисования, такие как рисование линий, прямоугольников, эллипсов и так далее.Я считаю, что есть два способа реализации:
- Наследование от
QQuickPaintedItem
и переопределение void Quick::paint(QPainter *painter)
. - Рисование фигур в
Canvas.onPaint
напрямую.
Но я считаю, что обе реализации не так быстры, как QWidget::paintEvent()
.Из документа Qt Quick Scene Graph говорится, что рендеринг QQuickPaintedItem
- это двухэтапная операция, а прямое использование API графа сцены API всегда значительно быстрее.Так как же использовать API графа сцены для реализации этого?Или я должен использовать QWidget
, но не QML
.Вот пример кода и эффект производительности .