⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.cpp

📁 局域网聊天室
💻 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","网络连接失败");	tcpSocket->close();	close();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -