Cours:DiyWidgetQT : Différence entre versions
(2 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | =Principe= | ||
+ | |||
Pour créer votre propre Widget, il convient de spécialiser la classe [https://doc.qt.io/qt-5/qwidget.html QWidget] : | Pour créer votre propre Widget, il convient de spécialiser la classe [https://doc.qt.io/qt-5/qwidget.html QWidget] : | ||
Ligne 37 : | Ligne 39 : | ||
− | On pourra ensuite ajouter un objet de ce type dans l'interface graphique par exemple en faisant une promotion comme [[Cours:HeritageWidgetQT|vu dans une autre séance]] | + | On pourra ensuite ajouter un objet de ce type dans l'interface graphique par exemple en faisant une promotion comme [[Cours:HeritageWidgetQT|{{Rouge|vu}} dans une autre séance]] |
+ | |||
+ | ou ajouter un attribut dans la classe MainWindow puis ajouter cet objet dans l'interface graphique, par ex : | ||
+ | <source lang=cpp> | ||
+ | ... | ||
+ | // .h | ||
+ | MonWidget monWidget | ||
+ | ... | ||
+ | |||
+ | ... | ||
+ | // .cpp | ||
+ | ui->unWidget->layout()->addWidget(&monWidget); | ||
+ | // ou | ||
+ | setCentralWidget(&monWidget); | ||
+ | </source> |
Version actuelle datée du 2 octobre 2024 à 09:07
Principe
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);
}
On pourra ensuite ajouter un objet de ce type dans l'interface graphique par exemple en faisant une promotion comme vu dans une autre séance
ou ajouter un attribut dans la classe MainWindow puis ajouter cet objet dans l'interface graphique, par ex :
...
// .h
MonWidget monWidget
...
...
// .cpp
ui->unWidget->layout()->addWidget(&monWidget);
// ou
setCentralWidget(&monWidget);