Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]Affichage IP impossible

    29 janvier 2019 à 13:35:07

    Boonjour, je suis entrain de réaliser un programme client/serveur sous Qt, et ici plus précisément le programme qui fera office de serveur.

    Seulement voila: impossible d'afficher l'IP de mon serveur quand celui ci démarre, j'ai beau relire la documentation sur les QString, QLineEdit, j'ai a chaque fois une erreur différente, ou alors rien ne se passe... voila le code en question, si quelqu'un aurait des conseils, je vous en serais reconnaissant !

    Le fichier .cpp

    #include "masterhead.h"
    
    
    MasterHead::MasterHead()
    {
        setupUi(this);
        setWindowTitle("Principal");
    
        texteIP = new QLabel;
        texteIP->setText("IP actuel:");
    
        IPserveur = new QLineEdit;
        IPserveur->setDisabled(true);
        IPserveur->setText("0.0.0.0");
        IPserveur->setMaximumWidth(115);
        IPserveur->setMaximumHeight(20);
        etatServeur = new QLabel;
        etatServeur->setText("<b><font color=""red"">Offline</font></b>");
    
        texteEtat = new QLabel;
        texteEtat->setText("Etat:");
    
        statusBar()->addWidget(texteEtat);
        statusBar()->addWidget(etatServeur);
        statusBar()->addWidget(texteIP);
        statusBar()->addWidget(IPserveur);
    
    
        tailleMessage = 0;
    }
    
    void MasterHead::on_port_valueChanged()
    {
        portRentre = port->value();
    
    }
    
    void MasterHead::on_boutonDemarrer_clicked()
    {
        if (boutonDemarrer->text() == "Démarrer")
        {
            boutonDemarrer->setText("Arreter");
            serveur = new QTcpServer;
                if (!serveur->listen(QHostAddress::Any, portRentre))
                {
                    etatServeur->setText("<b><font color=""red"">Erreur:</font></b>" + serveur->errorString());
                    port->setDisabled(true);
                }
                else
                {
                etatServeur->setText("<b><font color=""green"">Online<font></b>");
                port->setDisabled(true);
                
    
                }
                tailleMessage = 0;
        }
        else {
            boutonDemarrer->setText("Démarrer");
            serveur->close();
            etatServeur->setText("<b><font color=""red"">Offline</font></b>");
            port->setDisabled(false);
    
        }
    
    }

    Le fichier .h

    #ifndef MASTERHEAD_H
    #define MASTERHEAD_H
    
    #include <QMainWindow>
    #include <QtWidgets>
    #include <QtNetwork>
    #include "ui_masterhead.h"
    
    
    class MasterHead : public QMainWindow, private Ui::MasterHead
    {
        Q_OBJECT
    
    public:
        MasterHead();
    
    private slots:
        void on_boutonDemarrer_clicked();
        //void on_boutonEnvoyer_clicked();
        void nouvelleConnection();
        //void deconnectionClient();
        //void donneesRecues();
        void on_port_valueChanged();
    
    
    private:
        Ui::MasterHead *ui;
        QTcpServer *serveur;
        QList<QTcpSocket *> clients;
        quint16 tailleMessage;
        int portRentre;
        QLabel *etatServeur;
        QLabel *texteEtat;
        QLabel *texteIP;
        QLineEdit *IPserveur;
        
    
    
    
    };
    
    #endif // MASTERHEAD_H
    

    et un aperçu de l'ui:

    J'ai pensé qu'insérer le code suivant a la ligne 53 de mon .cpp pourrait être la solution du problème mais non, rien ne se passe...:

    IPserveur->setText(serveur->serverAddress().toString());

    Nb: j'ai volontairement "omis certains bouts de code que je pense inutile a la résolution du problème


    -
    Edité par spartan314 29 janvier 2019 à 13:37:10

    • Partager sur Facebook
    • Partager sur Twitter
      30 janvier 2019 à 18:12:54

      Salut,

      pourquoi veux-tu afficher l’ip de ton serveur ? Et que comptes-tu faire avec cet ip ?

      • Partager sur Facebook
      • Partager sur Twitter

      Ton présent détermine ton futur et la connaissance te placera au dessus de ta génération .

        31 janvier 2019 à 8:38:00

        Je sais pas si c'est l'adresse du serveur ou celle sur laquelle qu'il écoute qui est affichée.

        Et en testant :

        serveur->serverAddress().isNull()



        • Partager sur Facebook
        • Partager sur Twitter
          31 janvier 2019 à 15:25:09

          Merci de vos réponses, en fait je cherchait a mettre a jour la barre d'état de la fenêtre qui controle mon serveur, pour dire a ceux qui veulent s'y connecter quel est mon IP, ça épargne un whatismyIP ! 

          j'ai trouvé la solution, en relisant la doc, comme quoi... j'ai mis ce code:

                       IPServeur->setText(serveur->serverAddress().toString());
          

          Le problème venait d'une mauvaise déclaration, d'une conversion impossible (d'ou le .toString) et d'une mauvaise connaissance des pointeurs dans mon.H !

          • Partager sur Facebook
          • Partager sur Twitter

          [Qt]Affichage IP impossible

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown