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
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
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
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
Partager