IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Gérer une QList<QPushbutton *>

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Par défaut Gérer une QList<QPushbutton *>
    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

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Salut,

    Je pense que ton problème peut venir d'ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    m_adresseIP=nouveauClient->localAddress().toString();
     
    QPushButton *nouveauBoutonClient = new QPushButton(m_adresseIP);
    Pourquoi as-tu une variable de classe pour ce string au lieu d'une variable locale?

    De plus pourquoi tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void FenServeur::nouvelleConnexion()
    {
      .... 
           int i(0);
            for(i=0;i!=m_clients.size();i++);
            i--;
            m_userName=QString::number(i);
    ....
    }
    au lieu de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void FenServeur::nouvelleConnexion()
    {
      .... 
    int i = (m_clients.size() == 0) ? 0 : m_clients.size() - 1;
    m_userName=QString::number(i);
    ....
    }

Discussions similaires

  1. insérer et gérer une animation flash
    Par zorglub88 dans le forum MFC
    Réponses: 13
    Dernier message: 26/05/2005, 16h11
  2. gérer une base de donnée MySql via C++
    Par thiane dans le forum Bibliothèques
    Réponses: 9
    Dernier message: 19/05/2005, 16h19
  3. [dbase] Possibilité de gèrer une base via c++?
    Par WriteLN dans le forum C++
    Réponses: 6
    Dernier message: 08/11/2004, 17h27
  4. Gérer une barre d'outils
    Par Jean Claude BOULET dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 22h54
  5. [ODBC][WINDOWS] gérer une base via ODBC
    Par narmataru dans le forum Windows
    Réponses: 2
    Dernier message: 19/12/2003, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo