[Qt] signal connected() avec une socket

Résolu
bonjour
j'essaie d'afficher dans un label l'état de ma socket et pour cela j'utilise le signal connected() que l'on trouve dans QAbstractSocket mais il y'a une erreur quelqu'un aurait une idée qui pourrait m'aider ?
merci

voila le code
void MainWindow::etat()         //affiche l'état de la socket
{
    if(soc.state()==QAbstractSocket::connected())
    {
        ui->labeletat->setText("connecté");
    }
    if(soc.state()==QAbstractSocket::disconnected())
    {
        ui->labeletat->setText("déconnecté");
    }
}

1 réponse

  1. Contributeur
    Bonjour,
    c'est normal, ce que tu appel est un signal et ne retourne rien !
    http://developer.qt.nokia.com/doc/qt-4.8/QAbstractSocket.html
    visiblement tu ne sais pas utiliser les signaux.
    Ce que je ferais, tu mets ton label à "deconnecter" par défaut, puis dans le constructeur de MainWindow:
    connect(soc,SIGNAL(connected()),MainWindow,SLOT(etat()) );
    attention à la syntaxe, je fais de mémoire, il faut peut être inversé les deux (cf. doc)
    ensuite, tu définis ainsi :
    void MainWindow::etat()         //affiche l'état de la socket
    {
            ui->labeletat->setText("connecté");
    }
    
    Ou, si tu veux savoir si tu es deconnecter à chaque instant, tu passes un paramètre à etat et tu connectes le signal stateChanged à la place de connected.
    Ce qui te permettra en plus d'avoir plusieurs états.