Bonjour, j'ai un probleme etrange que je n'arrive pas a resoudre depuis maintenant trop longtemps...
J'ai créé une classe COnglet qui me permet de creer un onglet avec un titre, et dedans une listbox associée, que je peut remplir grace a une methode...
Je cherche maintenant à relier le signal de la listbox (selected() pour etre precis) à un slot de ma classe et ainsi récuperer la sélection de l'utilisateur (ouf !)
voici ma classe
Ensuite, dans la fonction CreationOnglet (ce n'est pas le constructeur pour des raisons de facilite) :
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
38
39
40
41
42
43
44
45
46
47 class COnglet : public QObject { Q_OBJECT protected: QString m_titre; uint m_nbelements; QString *m_listeelements; //contient les elements et leur lien vers le hdd QString *m_listeliens; QWidget *pTab; QListBox *ListBox; QSize geometry; QTabWidget *m_TabPere; public: ~COnglet() { delete pTab; delete m_listeelements; delete m_listeliens; delete ListBox; } void setTitre(QString titre) { m_titre=titre; } uint getTitre() { return (m_nbelements); } void setNbElements(int nbelements) { m_nbelements=nbelements; } uint getNbElements() { return m_nbelements; } void SetListeElements(uint index, QString titre, QString lien); void CreationOnglet( QTabWidget *pPere,QString titre, int nbelements); signals: void EmitPlay(); private slots: void Play(int index); };
Tout compile bien, je n'ai pas oublie dans ma classe la declaration Q_OBJECT et elle herite bien de la classe QObject mais a l'execution j'ai un splendide :
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 void COnglet::CreationOnglet( QTabWidget *pPere,QString titre, int nbelements) { //creation de l'onglet m_TabPere = pPere; pTab = new QWidget(pPere); pPere->addTab(pTab,titre); pPere->showPage(pTab); m_titre=titre; m_nbelements=nbelements; geometry = (*pPere).frameSize(); //creation de la listbox m_listeelements = new QString[m_nbelements]; m_listeliens = new QString[m_nbelements]; ListBox = new QListBox(pTab, m_titre); (*ListBox).setFixedSize( geometry.width()-1, geometry.height()-27); //catch de la taille de l'onglet connect(ListBox,SIGNAL(selected ( int )),this,SLOT(Play(int ))); }
QObject::connect: No such slot QObject::void Play(int)
QObject::connect: (sender name: 'Bidule')
QObject::connect: (receiver name: 'unnamed')
Je précise que Bidule est le nom de l'onglet (bon c'est du test hein)
Je ne comprend pas tres bien que faire, j'ai pourtant bien refait x fois un qmake fubar.pro ou qmake -o Makefile fubar.pro mais non... fichu moc !!!
Je ne voit pas bien pourquoi il va chercher dans QObject
Ah, je précise que j'ai lu ce topic (mais j'avais tout bien fait) :
http://www.developpez.net/forums/vie...&view=previous
Partager