Bonjour tout le monde

je suis en train d'essayer de faire un Chat

je voudrai qu'a chaque fois qu'un nouveau client se connecte au serveur pop un QPushbutton avec son pseudo en paramètre qui permettrait si on clique dessus de rentrer dans une discussion privée

j'ai créer dans le .h une QList
Code : Sélectionner tout - Visualiser dans une fenêtre à part
QList<QPushButton *> m_boutonClients;
et j'arrive à faire en sorte que quand un nouveau client se connecte un bouton pop avec pour l'instant son IP en paramètre
mais le problème c'est que si un deuxième client se connecte (un deuxième bouton pop (ça c'est super) peut importe sur quel bouton je clique je pointe sur le dernier connecté
voici une partie de mon code
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
 
void FenServeur::nouvelleConnexion()
{
    QTcpSocket *nouveauClient = m_serveur->nextPendingConnection();
        m_clients<<nouveauClient;
    m_adresseIP=nouveauClient->localAddress().toString();
 
        QPushButton *nouveauBoutonClient = new QPushButton(m_adresseIP);
        m_boutonClients<<nouveauBoutonClient;
 
        m_layout->addWidget(nouveauBoutonClient);
 
        connect(nouveauBoutonClient,SIGNAL(clicked()),this,SLOT(afficherClient()));
        connect(nouveauClient,SIGNAL(readyRead()),this,SLOT(donneesRecus()));
}
De plus j'arrive pas a faire que quand le client se déconnecte se soit le bon bouton qui se delete.

Il faudrait je pense associé le QPushbuton au QTcpsocket

En faisant un peu du bricolage ca donne ca
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
 
void FenServeur::nouvelleConnexion()
{
    QTcpSocket *nouveauClient = m_serveur->nextPendingConnection();
        m_clients<<nouveauClient;
 
        int i(0);
        for(i=0;i!=m_clients.size();i++);
        i--;
        m_userName=QString::number(i);
 
            QPushButton *nouveauBoutonClient = new QPushButton(m_userName);
            m_boutonClients<<nouveauBoutonClient;
 
            m_layout->addWidget(m_boutonClients.at(i));
 
            connect(m_boutonClients.at(i),SIGNAL(clicked()),this,SLOT(afficherClient(i)));
        connect(m_clients.at(i),SIGNAL(readyRead()),this,SLOT(donneesRecus()));
}
j'ai grand besoin d'explication