bonjour,
voila,, ca doit etre tout bete, mais je ne comprends pas trop le probleme :
j'utilise un QListWidget, dans lequel, je mets 4 lignes toutes simple, et je veux (pour tester et comprendre, faire un connect entre le signal ItemClicked et un slot a moi pour changer le la couleur de fond de l'item, mais le connect ne marche pas, et je vois pas le souci :
si j compile, LD me donne le message suivant :
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
28
29
30
31
32
33
34
35
36
37 #include <QApplication> #include <QListWidget> #include <QListWidgetItem> #include <QObject> class List : public QListWidget { Q_OBJECT public : List(QWidget *parent = 0); private slots : void ClickItem(QListWidgetItem * item); }; void List::ClickItem(QListWidgetItem * item) { item->setBackground(QBrush(QColor(45,78,193))); } List::List(QWidget *parent) { connect(this, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(ClickItem(QListWidgetItem *))); } int main (int argc, char * argv[]) { QApplication app(argc, argv ); List * ListWidget = new List(); ListWidget->addItem(QString("option1")); ListWidget->addItem(QString("option2")); ListWidget->addItem(QString("option3")); ListWidget->addItem(QString("option4")); ListWidget->show(); return app.exec(); }
si j'essaie en supprimant Q_OBJECT de la classe, je n'ai pas d'erreur de linkage, mais a l'execution, j'ai le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 main.o: In function `List::List(QWidget*)': main.cpp:(.text+0x21): undefined reference to `vtable for List' main.cpp:(.text+0x28): undefined reference to `vtable for List' main.o: In function `List::List(QWidget*)': main.cpp:(.text+0x91): undefined reference to `vtable for List' main.cpp:(.text+0x98): undefined reference to `vtable for List' collect2: ld a retourné 1 code d'état d'exécution make: *** [listwidget] Erreur 1
l'application fonctionne, elle s'affiche, mais au clic, rien, pasd'evenement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Object::connect: No such slot QListWidget::ClickItem(QListWidgetItem*)
etant nouveau dans QT, je vois pas le probleme, c'est peu être tout bete.
si quelqu'un a une idée ....
là, j'en perds mon latin, ou plutot mon QT ...![]()
Partager