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

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

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