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 à 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);
}