Bonjour, je veux dessiner sur un widget mais Qt ne veut pas le faire.

J'ai redéfini la méthode paintEvent comme indiqué dans la doc.

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
void GWidget::paintEvent(QPaintEvent* event) {
    QWidget::paintEvent(event);
    std::cout<<"repaint!"<<std::endl;
    QPainter painter;
    painter.begin(this);
    static const QPoint points[4] = {
        QPoint(10, 80),
        QPoint(20, 10),
        QPoint(80, 30),
        QPoint(90, 70)
    };
    painter.setPen(Qt::SolidPattern);
    painter.drawPolygon(points, 4);
    painter.end();
}

Lorsque j'appelle repaint la méthode paintEvent n'est pas appelée alors j'ai essayer de l'appeler manuellement :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 QPaintEvent event(QRegion(0, 0, gWidget->width(), gWidget->height()));
    gWidget->paintEvent(&event);

Voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active
QPainter::end: Painter not active, aborted