?? login.cpp
字號:
#include <QHostAddress>#include <QMessageBox>#include <QTextCodec>#include <QGraphicsView>#include "login.h"#include "enrol.h"Login::Login(QWidget *parent):QDialog(parent){ setupUi(this); tcpSocket = new QTcpSocket(this); QTextCodec *chineseCodec=QTextCodec::codecForName("UTF_8"); QTextCodec::setCodecForCStrings(chineseCodec); connect(loginButton,SIGNAL(clicked()),this,SLOT(sendMsg())); connect(enrolButton,SIGNAL(clicked()),this,SLOT(enrol())); connect(eixtButton,SIGNAL(clicked()),this,SLOT(close())); connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(recvMsg())); connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error())); tcpSocket->connectToHost("192.168.0.7",8000);}/*analyze usrname and password whether or not legal*/int Login::check(){ /*to decide usrname*/ QString str = usrnameEdit->text(); int n = str.size(); int i = 0; if((n < 5) || (n > 16)) return 0; while(str.data()[i] != '\0'){ if(((str.data()[i] >= '0')&&(str.data()[i] <= '9')) || ((str.data()[i] >= 'A')&&(str.data()[i] <= 'Z')) || ((str.data()[i] >= 'a')&&(str.data()[i] <= 'z'))) i++; else return 0; } /*to decide password*/ QString str1 = passwordEdit->text(); int m = str1.size(); int j = 0; if((m < 5) || (m > 16)) return 0; while(str1.data()[j] != '\0'){ if(((str1.data()[j] >= '0')&&(str1.data()[j] <= '9')) || ((str1.data()[j] >= 'A')&&(str1.data()[j] <= 'Z')) || ((str1.data()[j] >= 'a')&&(str1.data()[j] <= 'z'))) j++; else return 0; } return 1;}/*skip enrol window*/void Login::enrol(){// if(erl)// delete erl; erl = new Enrol(); erl->show();}/*send login message*/void Login::sendMsg(){ int n = check(); if(n){ QTextStream out(tcpSocket); QString login_message; login_message += "Login"; login_message += " "; login_message += usrnameEdit->text(); login_message += " "; login_message += passwordEdit->text(); login_message += "\n"; login_message += '\0'; out<<login_message<<endl; } else{ QTextCodec *chineseCodec=QTextCodec::codecForName("UTF_8"); QTextCodec::setCodecForCStrings(chineseCodec); QMessageBox::critical(this,"對不起","用戶帳號或用戶密碼不正確!"); usrnameEdit->clear(); passwordEdit->clear(); }}/*recv login message*/void Login::recvMsg(){ if(!tcpSocket->canReadLine()) return; QString responseLine; responseLine = tcpSocket->readLine(); msgBuffer = responseLine; if(msgBuffer=="OK@\n"){// QMessageBox::information(this,"恭喜","登錄成功!") disconnect(tcpSocket,SIGNAL(readyRead()),this,SLOT(recvMsg())); dia = new Dialog(tcpSocket,usrnameEdit->text());/*success skip chat window*/ dia->show(); close(); } if(msgBuffer=="FAIL@\n"){ QMessageBox::critical(this,"錯誤信息!","登錄失敗!"); msgBuffer.clear(); usrnameEdit->clear(); passwordEdit->clear(); } if(msgBuffer=="ONLINE@\n"){ QMessageBox::critical(this,"錯誤信息!","此用戶已登錄!"); msgBuffer.clear(); usrnameEdit->clear(); passwordEdit->clear(); }}void Login::error(){ QTextCodec *chineseCodec=QTextCodec::codecForName("UTF_8"); QTextCodec::setCodecForCStrings(chineseCodec); QMessageBox::critical(this,"socket error","網(wǎng)絡(luò)連接失敗"); tcpSocket->close(); close();}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -