Cours:DiyWidgetQT : Différence entre versions
| 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 à 08: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);
}