1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| #include "leclient.h"
static const quint16 DEFAULT_PORT = 6667;
leclient::leclient(QWidget *parent)
: QWidget(parent)
{
setFixedSize(450, 450);
b_envoyer=new QPushButton("envoyer");
b_connecter=new QPushButton("connecter");
l_port=new QLabel("port");
l_serveur=new QLabel("serveur");
le_serveur->setText("127.0.0.1");
l_pseudo=new QLabel("pseudo");
le_pseudo->setText("saisissez votre pseudo");
l_message=new QLabel("message");
s_port=new QSpinBox(this);
s_port->setRange(1, 32767);
s_port->setValue(DEFAULT_PORT);
le_serveur=new QLineEdit(this);
le_pseudo=new QLineEdit(this);
le_msgsortant=new QLineEdit(this);
le_msgsortant->setText("");
txt_msgentrant=new QTextEdit(this);
txt_msgentrant->setReadOnly(true);
layout1 = new QGridLayout;
layout1->addWidget(txt_msgentrant,0,0,1,3);
layout1->addWidget(l_message,1,0);
layout1->addWidget(le_msgsortant,1,1);
layout1->addWidget(b_envoyer,1,2);
layout2=new QGridLayout;
layout2->addWidget(l_serveur,0,0);
layout2->addWidget(le_serveur,0,1);
layout2->addWidget(l_port,0,2);
layout2->addWidget(s_port,0,3);
layout2->addWidget(l_pseudo,1,0);
layout2->addWidget(le_pseudo,1,1);
layout2->addWidget(b_connecter,1,2);
onglets=new QTabWidget(this);
page1 = new QWidget;
page2 = new QWidget;
page1->setLayout(layout1);
page2->setLayout(layout2);
onglets->addTab(page1, "chat");
onglets->addTab(page2, "configuration");
ui.setupUi(this);
//construction des objet reseau
buffer = new QBuffer(this);
socket = new QTcpSocket(this);
//ouverture du buffer en lecture ecriture
buffer->open(QIODevice::ReadWrite);
//connection des signaux avec les slots
connect(le_msgsortant, SIGNAL(returnPressed()), SLOT(envoyer()));
connect(b_envoyer, SIGNAL(clicked()), SLOT(envoyer()));
connect(b_connecter, SIGNAL(clicked()), SLOT(basculerLaConnection()));
connect(socket, SIGNAL(connected()), SLOT(setConnected()));
connect(socket, SIGNAL(disconnected()), SLOT(setDisconnected()));
connect(socket, SIGNAL(readyRead()), SLOT(recevoir()));
setDisconnected();
}
leclient::~leclient()
{
buffer->close();
}
void leclient::setConnected()
{
s_port->setEnabled(false);
le_serveur->setEnabled(false);
le_pseudo->setEnabled(true);
le_msgsortant->setEnabled(true);
txt_msgentrant->setEnabled(true);
txt_msgentrant->clear();
b_envoyer->setEnabled(true);
b_connecter->setText("Deconnecter");
}
void leclient::setDisconnected()
{
s_port->setEnabled(true);
le_serveur->setEnabled(true);
le_pseudo->setEnabled(false);
le_msgsortant->setEnabled(false);
txt_msgentrant->setEnabled(false);
b_envoyer->setEnabled(false);
b_connecter->setText("Connecter");
}
//slot de basculement
void leclient::basculerLaConnection()
{
//si non connecter ,connecter au serveur avec le port choisi
//sinon deconnecter
if (socket->state() == QAbstractSocket::UnconnectedState)
{
socket->connectToHost(le_serveur->text(), s_port->value());
}
else
{
socket->disconnectFromHost();
}
}
//slot pour l envoi du mesage
void leclient::envoyer()
{
//ecrire dans la socket le message
socket->write("-" + le_pseudo->text().toLatin1() + ">>> " + le_msgsortant->text().toLatin1() + "\n");
le_msgsortant->clear();
}
void leclient::recevoir()
{
qint64 bytes = buffer->write(socket->readAll());
buffer->seek(buffer->pos() - bytes);
while (buffer->canReadLine())
{
QString line = buffer->readLine();
txt_msgentrant->append(line.simplified());
}
} |
Partager