QT 即时聊天工具 1:登录界面

初学者,代码上传上来也只是为了自娱自乐

简单介绍一下,完成品是实现类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_;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值