初学者,代码上传上来也只是为了自娱自乐
简单介绍一下,完成品是实现类QQ的IM即时聊天工具,功能是大概有登录、注册,收发文件图片,图灵机器人等等
这是登录界面,先上一个登录界面大概的效果图:
代码:
QString Widget::username_;
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("Logon Screen(未连接至服务器,请检查您的网络!)");
connect(Tcpcli::getNet(),&Tcpcli::connectedsuccess,
[=](){
qDebug()<<"network has successfully build up";
QMessageBox::information(this,"Tip","Network has successfully build up!");
this->setWindowTitle("Logon Screen( 已连接 )");
}
);//连接成功后更改标题名
dis = connect(Tcpcli::getNet(),&Tcpcli::recvSignal,this,&Widget::recvDealFun);
//处理服务器发送的信息
uiinitfun(); //初始化窗口
}
void Widget::uiinitfun()//初始化
{
//QMessageBox::information(this,"Point","Username:kaguya233\nPassword:123456");
this->setWindowOpacity(qreal(0.96));
this->setWindowIcon(QIcon(QPixmap("://picture/1.jpeg.jpg")));
this->setFixedSize(this->width(),this->height());
la_pic = new QLabel(this);
QPixmap pixm("://picture/3.jpg.jpg");
la_pic->setPixmap(pixm);
la_pic->setScaledContents(true);
la_tim = new QLabel(this);
la_tim->setGeometry(this->width()-350,20,400,20);
la_tim->setStyleSheet("color:dark;");
QFont font("Microsoft YaHei",8,30);
la_tim->setFont(font);
timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,&Widget::timeoutEv);
timer->start(1000);
//ui->widget->stackUnder(la_pic);
la_pic->stackUnder(ui->widget);
ui->lineEdit_2->setContextMenuPolicy(Qt::NoContextMenu);
ui->lineEdit_2->setPlaceholderText(QString::fromLocal8Bit("Username"));
ui->lineEdit->setPlaceholderText(QString::fromLocal8Bit("Password"));
ui->lineEdit->setContextMenuPolicy(Qt::NoContextMenu);
ui->lineEdit->setEchoMode(QLineEdit::Password);
ui->pushButton->setFont(font);
ui->pushButton_3->setFont(font);
ui->pushButton_2->setFont(font);
}
void Widget::resizeEvent(QResizeEvent *event)//qlable处理函数,让背景占满
{
Q_UNUSED(event);
la_pic->resize(this->size());
la_pic->setStyleSheet("background:transparent;");
}
Widget::~Widget()
{
delete ui;
}
void Widget::timeoutEv()//qlable-设置时间
{
QDateTime time = QDateTime::currentDateTime();
QString str_time = time.toString("yyyy-MM-dd hh:mm:ss dddd");
QString *str_abo = new QString(" Author:Kaguya233");
str_time += str_abo;
la_tim->setText(str_time);
}
void Widget::on_pushButton_clicked()//账号密码发送槽函数
{
QString username = ui->lineEdit_2->text();
QString password = ui->lineEdit->text();
getusername(username);
if(username.isEmpty()){
qDebug()<<"username";
QMessageBox::warning(this,"Warning!"," 账号不能为空! ");
return;
}
else if(password.isEmpty()){
qDebug()<<"password";
QMessageBox::warning(this,"Warning!"," 密码不能为空! ");
return;
}
QString buf("login :");
buf += (username + " " + password);
qDebug()<<buf;
Tcpcli::getNet()->sendMessageFun(buf);
}
void Widget::recvDealFun(QString str)//处理服务器信息函数
{
qDebug()<<str;
if(str == "/welcome/")
{
qDebug()<<"success!";
if(flag == 0){
QMessageBox::information(this,"Tip!"," 登录成功! ");
}else{
QMessageBox::information(this,"Tip!"," 注册成功! ");
}
MyMainWindow = new MmianWindow;
MyMainWindow->show();
disconnect(dis);
this->close();
}else if(str == "/none/"){
qDebug()<< "no such username! " ;
QMessageBox::information(this,"Tip!"," 错误用户名或者密码 ") ;
}
}
void Widget::on_pushButton_2_clicked()//退出按钮
{
close();
}
void Widget::closeFun(){
}
void Widget::on_pushButton_3_clicked()
{
flag = 1;
QString username = ui->lineEdit_2->text();
QString password = ui->lineEdit->text();
getusername(username);
if(username.isEmpty()){
qDebug()<<"username";
QMessageBox::warning(this,"Warning!!!"," 账号不能为空! ");
return;
}
else if(password.isEmpty()){
qDebug()<<"password";
QMessageBox::warning(this,"Warning!!!"," 密码不能为空! ");
return;
}
QString buf("logon #");
buf += (username + " " + password);
qDebug()<<buf;
Tcpcli::getNet()->sendMessageFun(buf);
}
QString Widget::getusername(QString str){
if(!str.isEmpty()){
username_ = str;
}
return username_;
}