#include "FenClient.h"
FenClient::FenClient()
{
setupUi(this);
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;
}
// Tentative de connexion au serveur
void FenClient::on_boutonConnexion_clicked()
{
// On annonce sur la fen�tre qu'on est en train de se connecter
listeMessages->append(tr("<em>Tentative de connexion en cours...</em>"));
boutonConnexion->setEnabled(false);
socket->abort(); // On d�sactive les connexions pr�c�dentes s'il y en a
socket->connectToHost(serveurIP->text(), serveurPort->value()); // On se connecte au serveur demand�
}
// Envoi d'un message au serveur
void FenClient::on_boutonEnvoyer_clicked()
{
QByteArray paquet;
QDataStream out(&paquet, QIODevice::WriteOnly);
// On pr�pare le paquet � envoyer
QString messageAEnvoyer = tr("<strong>") + pseudo->text() +tr("</strong> : ") + message->text();
out << (quint16) 0;
out << messageAEnvoyer;
out.device()->seek(0);
out << (quint16) (paquet.size() - sizeof(quint16));
socket->write(paquet); // On envoie le paquet
message->clear(); // On vide la zone d'�criture du message
message->setFocus(); // Et on remet le curseur � l'int�rieur
}
// Appuyer sur la touche Entr�e a le m�me effet que cliquer sur le bouton "Envoyer"
void FenClient::on_message_returnPressed()
{
on_boutonEnvoyer_clicked();
}
// On a re�u un paquet (ou un sous-paquet)
void FenClient::donneesRecues()
{
/* M�me principe que lorsque le serveur re�oit un paquet :
On essaie de r�cup�rer la taille du message
Une fois qu'on l'a, on attend d'avoir re�u le message entier (en se basant sur la taille annonc�e tailleMessage)
*/
QDataStream in(socket);
if (tailleMessage == 0)
{
if (socket->bytesAvailable() < (int)sizeof(quint16))
return;
in >> tailleMessage;
}
if (socket->bytesAvailable() < tailleMessage)
return;
// Si on arrive jusqu'� cette ligne, on peut r�cup�rer le message entier
QString messageRecu;
in >> messageRecu;
// On affiche le message sur la zone de Chat
listeMessages->append(messageRecu);
// On remet la taille du message � 0 pour pouvoir recevoir de futurs messages
tailleMessage = 0;
}
// Ce slot est appel� lorsque la connexion au serveur a r�ussi
void FenClient::connecte()
{
listeMessages->append(tr("<em>Connexion r�ussie !</em>"));
boutonConnexion->setEnabled(true);
}
// Ce slot est appel� lorsqu'on est d�connect� du serveur
void FenClient::deconnecte()
{
listeMessages->append(tr("<em>D�connect� du serveur</em>"));
}
// Ce slot est appel� lorsqu'il y a une erreur
void FenClient::erreurSocket(QAbstractSocket::SocketError erreur)
{
switch(erreur) // On affiche un message diff�rent selon l'erreur qu'on nous indique
{
case QAbstractSocket::HostNotFoundError:
listeMessages->append(tr("<em>ERREUR : le serveur n'a pas pu �tre trouv�. V�rifiez l'IP et le port.</em>"));
break;
case QAbstractSocket::ConnectionRefusedError:
listeMessages->append(tr("<em>ERREUR : le serveur a refus� la connexion. V�rifiez si le programme \"serveur\" a bien �t� lanc�. V�rifiez aussi l'IP et le port.</em>"));
break;
case QAbstractSocket::RemoteHostClosedError:
listeMessages->append(tr("<em>ERREUR : le serveur a coup� la connexion.</em>"));
break;
default:
listeMessages->append(tr("<em>ERREUR : ") + socket->errorString() + tr("</em>"));
}
boutonConnexion->setEnabled(true);
}
lorsque je n'ouvre pas des dossier (header source forme) il ni a aucune erreur a part celle décrite plus haut mais quand on ouvre les dossier ça nous donne: pour le header:
:-1: avertissement : TARGET is empty ; C:\...\FenClient.h:6: erreur : 'ui_FenClient.h' file not found ; C:\...\FenClient.h:9: erreur : base class has incomplete type ; C:\Qt\5.9.8\mingw53_32\include\QtCore\qmetatype.h:1333: forward declaration of 'QWidget' ; C:\...\FenClient.h:9: erreur : use of undeclared identifier 'Ui' ; C:\...\FenClient.h:9: erreur : expected class name ; C:\...\FenClient.h:9: avertissement : 'FenClient' has virtual functions but non-virtual destructor
pour le FenClient.cpp:
:-1: avertissement : TARGET is empty ; C:\...\FenClient.cpp:5: erreur : use of undeclared identifier 'setupUi' ; C:\...\FenClient.cpp:7: erreur : no matching constructor for initialization of 'QTcpSocket' ; C:\Qt\5.9.8\mingw53_32\include\QtNetwork\qtcpsocket.h:56: candidate constructor not viable: no known conversion from 'FenClient *' to 'QObject *' for 1st argument ; C:\Qt\5.9.8\mingw53_32\include\QtNetwork\qtcpsocket.h:60: candidate constructor not viable: no known conversion from 'FenClient *' to 'QTcpSocketPrivate &' for 1st argument ; C:\Qt\5.9.8\mingw53_32\include\QtNetwork\qtcpsocket.h:65: candidate constructor not viable: no known conversion from 'FenClient *' to 'const QTcpSocket' for 1st argument ; C:\Qt\5.9.8\mingw53_32\include\QtCore\qglobal.h:324: expanded from macro 'Q_DISABLE_COPY' ; C:\Qt\5.9.8\mingw53_32\include\QtNetwork\qtcpsocket.h:61: candidate constructor not viable: requires at least 2 arguments, but 1 was provided ; C:\...\FenClient.cpp:8: erreur : no matching function for call to 'connect' ; C:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\winsock.h:280: candidate function not viable: requires 3 arguments, but 4 were provided ; C:\...\FenClient.cpp:9: erreur : no matching function for call to 'connect' ; C:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\winsock.h:280: candidate function not viable: requires 3 arguments, but 4 were provided ; C:\...\FenClient.cpp:10: erreur : no matching function for call to 'connect' ; C:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\winsock.h:280: candidate function not viable: requires 3 arguments, but 4 were provided ; C:\...\FenClient.cpp:11: erreur : no matching function for call to 'connect' ; C:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\winsock.h:280: candidate function not viable: requires 3 arguments, but 4 were provided ; C:\...\FenClient.cpp:20: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:21: erreur : use of undeclared identifier 'boutonConnexion' ; C:\...\FenClient.cpp:24: erreur : use of undeclared identifier 'serveurIP' ; C:\...\FenClient.cpp:24: erreur : use of undeclared identifier 'serveurPort' ; C:\...\FenClient.cpp:34: erreur : use of undeclared identifier 'pseudo' ; C:\...\FenClient.cpp:34: erreur : use of undeclared identifier 'message' ; C:\...\FenClient.cpp:79: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:88: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:89: erreur : use of undeclared identifier 'boutonConnexion' ; C:\...\FenClient.cpp:95: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:104: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:107: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:110: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:113: erreur : use of undeclared identifier 'listeMessages' ; C:\...\FenClient.cpp:116: erreur : use of undeclared identifier 'boutonConnexion' ; C:\...\FenClient.cpp:36: avertissement : use of old-style cast ; C:\..\FenClient.cpp:39: avertissement : use of old-style cast ; C:\...\FenClient.cpp:39: avertissement : implicit conversion changes signedness: 'int' to 'unsigned int' ; C:\...\FenClient.cpp:64: avertissement : use of old-style cast
dans main .cpp:
:-1: avertissement : TARGET is empty ; :-1: avertissement : TARGET is empty ; :-1: avertissement : TARGET is empty ; C:\.
..\main.cpp:9: erreur : no member named 'show' in 'FenClient'
Je crois que j'avais eu le même type de problème. Essayez peu être de créer une "application qt avec widgets", car il vous disent qu'ils ne trouvent pas les fichier ui, là tout le travail de fichiers serra déjà fait. Sinon je ne sais pas ce que vous pouvez faire.
Heu je ne sais pas trop car le dossier s’appelle qt 5 (C:\Qt\5.9.8) mais le raccourci qt 4.10.2 et refaire le projet avec un projet qt widget mais c'est comme s’il ne le voyer même pas. Dans l'onglet des projet il apparaît pas mes il est dans le .pro je vais réinstaller qt
OK j'ais réinstaller qt, j'ais tout refait... et ça marche pas il me met plusieurs erreur mais une seul fatale(dans la fenêtre d'exécution il y a un petit 1 et devant la ligne setupUi(this);(ligne 5 de fenclient.cpp)il y a un petit point déclamation) il met l'erreur
H:\photo\c++\qt\client\FenClient.cpp:5: erreur : no matching function for call to 'FenClient::setupUi(FenClient*)'
setupUi(this);
^
apres ca pourait avoir un raport avec une erreur :
H:\photo\c++\qt\client\fenclient.cpp:99: erreur : use of undeclared identifier 'QAbstractSocket'
ou celle ci
H:\photo\c++\qt\client\fenclient.h:5: erreur : 'QtNetwork' file not found
non il y est c'est bizarre ces erreur je vais le compiler sur une autre machine au cas ou...
ca marche pas mais il y a dautre erreur qui apparaissent et plus celle du début bon je ne comprends pas la signification help me:
:-1: avertissement : TARGET is empty
D:\photo\c++\qt\client\FenClient.cpp:2: In file included from ..\client\FenClient.cpp:2:0:
D:\photo\c++\qt\client\fenclient.ui:149: erreur : too many decimal points in number
<string>127.0.0.1</string>
^~~~~~~~~
D:\photo\c++\qt\client\fenclient.ui:1: erreur : expected unqualified-id before '<' token
<?xml version="1.0" encoding="UTF-8"?>
^
D:\photo\c++\qt\client\fenclient.ui:149: erreur : too many decimal points in number
<string>127.0.0.1</string>
Tu n'aurais pas oublié des guillemets autour de l'adresse 17.0.0.1? Je ne trouve pas de ligne où tu utilises cette adresse, c'est normal? Où est défini serveurIP?
18:14:12: Échec lors de l'exécution du programme. Mauvais chemin ou permissions ?
18:14:12: D:\chat\chat\build-client-Desktop_Qt_5_14_1_MinGW_64_bit-Release\client.exe exited with code -1
18:14:12: The process failed to start. Either the invoked program "D:\chat\chat\build-client-Desktop_Qt_5_14_1_MinGW_64_bit-Release\client.exe" is missing, or you may have insufficient permissions to invoke the program.
déjà ce n'est plus des erreur incompressible meme si qt a tout les droit il ne devrais pas me sortir ça .
18:14:12: D:\chat\chat\build-client-Desktop_Qt_5_14_1_MinGW_64_bit-Release\client.exe exited with code -1
quesque le exited with code -1 ?
a est aussi il y a ce message au lancement de qt
Project ERROR: You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.
Could not read qmake configuration file C:/Qt2/5.14.1/android/mkspecs/android-clang/qmake.conf.
2020-03-08T18:35:25 Clang Code Model: Error: The clangbackend executable "C:\Qt2\Tools\QtCreator\bin\clangbackend.exe" could not be started (timeout after 10000ms).
mettre localhost ne change rien
je las quand même mis en relese et puis jais récupère le exe je le lance je mes les dll a côté et il me sort
jais trouver il suffi de copier le dossier pudding qui se trouve C:\Qt\5.14.1\mingw73_32\plugins
Qt 4.10.2 erreur d’exécution
× 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.
git is great because Linus did it, mercurial is better because he didn't.
Tu n'aurais pas oublié des guillemets autour de l'adresse 17.0.0.1? Je ne trouve pas de ligne où tu utilises cette adresse, c'est normal? Où est défini serveurIP?