Cours:DiyWidgetQT : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 21 : Ligne 21 :
  
 
Cette méthode ne sera {{Rouge|pas appelée directement}}. On utilisera au besoin [https://doc.qt.io/qt-5/qwidget.html#paintEvent les méthodes {{Rouge|update}} ou {{Rouge|repaint}}] au besoin !
 
Cette méthode ne sera {{Rouge|pas appelée directement}}. On utilisera au besoin [https://doc.qt.io/qt-5/qwidget.html#paintEvent les méthodes {{Rouge|update}} ou {{Rouge|repaint}}] au besoin !
 +
 +
 +
On utilisera la classe [https://doc.qt.io/qt-5/qpainter.html#details QPainter] pour faire le dessin du widget, ex :
 +
 +
<source lang=cpp>
 +
void MonWidget::paintEvent(QPaintEvent *event)
 +
{
 +
    QPainter painter(this);
 +
 +
    painter.drawRect(width()/4,height()/4,
 +
                    width()/2,height()/2);
 +
 +
}
 +
</source>

Version du 2 octobre 2024 à 09:57

Pour créer votre propre Widget, il convient de spécialiser la classe QWidget :

class MonWidget : public QWidget
{
    Q_OBJECT
public:
    MonWidget(QWidget *parent = nullptr);

signals:
};


Il suffit ensuite de redéfinir la méthode paintEvent qui est bien entendue déclarée comme virtual dans la classe QWidget !

protected:
    void paintEvent(QPaintEvent *event) override;

Cette méthode ne sera pas appelée directement. On utilisera au besoin les méthodes update ou repaint au besoin !


On utilisera la classe QPainter pour faire le dessin du widget, ex :

void MonWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    painter.drawRect(width()/4,height()/4,
                     width()/2,height()/2);

}