Bonsoir, voilà mon problème :
_ Je dois creer un objet graphique qui comporte une suite d'éléments reliés par des traits et des fleches (un peu comme un graphcet ou un organigrame).
Je me suis donc dis que je vais créer un objet dérivant de QListWidget, et modifier (dans un premier temps pour faire des tests) le paintEvent de cet objet pour voir si je peux tracer dedans.
j'ai donc une classe myQListWidget (voici la déclaration) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class myQListWidget : public QListWidget { Q_OBJECT public: myQListWidget(QWidget *parent = 0); QSize minimumSizeHint() const; QSize sizeHint() const; protected: void paintEvent(QPaintEvent *event); };
et voilà sa définition :
Pour testern j'ai ouvert designer, fait un nouveau Mainwindow et le membre que je lui ajoute est ma liste spéciale :
Code : 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
17
18
19
20
21
22
23
24
25
26
27 myQListWidget::myQListWidget(QWidget *parent) : QListWidget(parent) { } void myQListWidget::paintEvent(QPaintEvent * event) { QListWidget::paintEvent(event); QPainter painter(this); //----- Reglages préliminaires de la fenêtre de tracé -----// painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap)); painter.setBrush(QBrush(Qt::green, Qt::SolidPattern)); painter.drawRect(QRect(10,10,50,50));; } QSize myQListWidget::sizeHint() const { return QSize(400, 200); } QSize myQListWidget::minimumSizeHint() const { return QSize(100, 100); }
voilà le constructeur du QMainWindow :
Code : Sélectionner tout - Visualiser dans une fenêtre à part myQListWidget *liste;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 drawingInList::drawingInList(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); // ajout de la liste liste = new myQListWidget(centralWidget()); liste->addItem("test 1"); liste->addItem("test 2"); liste->addItem("test 3"); }
Voilà, bien évidemment, à l'éxécution j'ai ma liste qui s'affiche mais c'est tout, je n'ai pas de dessin qui se fait à l'intérieur ...
Any idea ?
Partager