Sas
Sas

Reputation: 563

QML type to draw with QPainter

In QML documentation I found an example of custom type (defined from C++) to draw on it with QPainter:

Header:

#include <QtQuick/QQuickPaintedItem> 

class PieChart : public QQuickPaintedItem    
{
...

public:
    void paint(QPainter *painter);

...
};

Source:

void PieChart::paint(QPainter *painter)
{
    QPen pen(m_color, 2);
    painter->setPen(pen);
    painter->setRenderHints(QPainter::Antialiasing, true);
    painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16);
}

How can I derive a type to draw (e.g. a line) on it asynchronously with QPainter? Thanks!

Upvotes: 2

Views: 4604

Answers (1)

Thomas McGuire
Thomas McGuire

Reputation: 5466

You have multiple ways do draw asynchronously:

1) Draw your content into a QImage at some point (maybe even in a seperate thread), and in QQuickPaintedItem::paint(), simply draw that image.

2) Use the QtQuick Canvas. Note that this is drawing in JavaScript, not in C++, but under the hood it is actually QPainter commands. The Canvas supports various render strategies, among others doing the drawing in a dedicated thread or in the render thread

Upvotes: 1

Related Questions