Bonjour, est-ce que quelqu'un saurait il quelque chose sur mon problème : un message d'avertissement s'affiche quand j'utilise la fonction value() de ma QSpinBox : "implicit conversion loses integer precision : 'int' to 'quint16' ".
Je précise encore que je suis en train de faire le cours de m@teo sur le chat.Merci d'avance pour votre réponse, j'ai fais la fênetre à la main.
Voici fenClient.cpp:
#include "FenClient.h"
FenClient::FenClient() : QWidget()
{
QVBoxLayout *layoutPrincipale = new QVBoxLayout;
QHBoxLayout *layout1 = new QHBoxLayout;
QHBoxLayout *layout2 = new QHBoxLayout;
QLabel *labelIp = new QLabel("Ip du serveur :");
QLabel *labelPort = new QLabel("Port du serveur :");
QLabel *labelPseudo = new QLabel("Pseudo :");
QLabel *labelMessage = new QLabel("Message :");
ipDuServ = new QLineEdit("127.0.0.1");
portDuServ = new QSpinBox;
portDuServ->setMaximum(65535);
portDuServ->setValue(50885);
boutonConnexion = new QPushButton("Connexion");
texteChat = new QTextEdit;
pseudoDuClient = new QLineEdit;
messageDuClient = new QLineEdit;
boutonEnvoyer = new QPushButton("Envoyer");
layout1->addWidget(labelIp);
layout1->addWidget(ipDuServ);
layout1->addWidget(labelPort);
layout1->addWidget(portDuServ);
layout1->addWidget(boutonConnexion);
layoutPrincipale->addLayout(layout1);
layoutPrincipale->addWidget(texteChat);
layout2->addWidget(labelPseudo);
layout2->addWidget(pseudoDuClient);
layout2->addWidget(labelMessage);
layout2->addWidget(messageDuClient);
layout2->addWidget(boutonEnvoyer);
layoutPrincipale->addLayout(layout2);
setLayout(layoutPrincipale);
setWindowTitle("Le chat de zombibi57");
socket = new QTcpSocket(this);
connect(socket, SIGNAL(readyRead()), this, SLOT(donneesRecues()));
connect(socket, SIGNAL(connected()), this, SLOT(connecte()));
connect(socket, SIGNAL(disconnected()), this, SLOT(deconnecte()));
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(erreurSocket(QAbstractSocket::SocketError)));
tailleMessage = 0;
}
void FenClient::on_boutonConnexion_clicked()
{
texteChat->append(tr("<em>Tentative de connection en cours...</em>"));
boutonConnexion->setEnabled(false);
socket->abort();
socket->connectToHost(ipDuServ->text(), portDuServ->value());//Pour le forum :Le message d'erreur s'affiche ici
}
Je ne connais pas suffisamment QT pour trouver la solution, mais ce que je peux te dire:
AymericS1 a écrit:
... un message d'avertissement s'affiche quand j'utilise la fonction value() de ma QSpinBox : "implicit conversion loses integer precision : 'int' to 'quint16' " ...
donc le warning: "Conversion [de type] implicite qui fait perdre de la précision: de type INT [sûrement sur 32 ou 64 bits] vers le type QUINT16 [sûrement sur 16 bits]".
J'en déduis, que le type retourné par "portDuServ->value()" est un INT, alors que le type attendu par "socket->connectToHost()" est un QUINT16.
Si j'étais à ta place, j’essaierai du faire un static_cast, pour convertir les types.
Merci, c'est gentil de m'avoir répondu, j'essayerai.
La programmation, c'est l'art d'exprimer sa créativité !
Problème avec la fonction value() de QSpinBox
× 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.
La programmation, c'est l'art d'exprimer sa créativité !
La programmation, c'est l'art d'exprimer sa créativité !