Qt实现仿真微信程序

一、前言

微信作为通信交流工具已经成为生活中不可或缺的一环,通过微信可以完成网络中随时随地的聊天,文件传输,朋友圈等功能,本文将通过Qt实现仿真微信程序,包含登录,好友列表,聊天,文件传输等功能。

二、界面设计

程序由登录,聊天,文件传输,文件接收四个界面构成,通过调用不同界面的不同模块完成相应的功能

1.登录界面

通过设计label空间并填入背景图片,通过LineEdit接收输入的账户密码,PushButton调用登录功能

2.聊天界面

聊天界面左侧是好友列表框,记录已上线的用户,右侧是聊天记录框,记录发送的消息,输入框喝发送按钮如下

3.文件传输界面

文件传输界面由文件选择,发送,进度条,大小和停止组成,分别实现不同的功能

4.文件接收模块

文件接收模块由大小显示,进度条和停止按钮组成

三、模块功能设计和具体代码

1.登录功能

运行程序首先出现的是登录界面,通过读取数据库存储的用户信息和密码进行读取判定,当数据库中不存在对应用户时,提示无用户,用户名和密码不匹配时提示密码错误。

首先进行数据库初始化,通过设置数据库名和密码进行数据库打开,并通过按钮信号调用登录验证功能。

void LoginDialog::Init()
{
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("test");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("root");
    QSqlQuery query(db);
    db.open();
}

登录验证功能首先接收LineEdit中的用户名进行SQL筛选查询对应用户名的密码,同时通过exec(),next()导航到有效记录,使用next()的原因是因为exec()执行SQL查询后,查询将放置在无效记录上,并且必须先导航到有效记录上才能检索数据值,因此调用next()将检索结果中的下一条记录,并将查询定位在检索到的记录上。

void LoginDialog::showWeChatWindow()
{
    QSqlQuery query;
    QString name = ui->usrLineEdit->text();
    QString sel1 = QString("select pwd from user where name = '%1'").arg(name);
    query.exec(sel1);//查询数据库对应用用户名的密码
    if(query.next())
    {
        QString pwd1 = query.value(0).toString();
        QString pwd2 = ui->pwdLineEdit->text();
        if(pwd2 == pwd1)
        {
            //密码正确
            weChatWindow = new MainWindow(this);
            weChatWindow->setWindowTitle(ui->usrLineEdit->text());
//            this->close();
            weChatWindow->show();//显示聊天窗口
        }
        else
        {
            //密码错误
            QMessageBox::warning(this,"提示","密码错误,请重新输入");
            ui->pwdLineEdit->clear();
            ui->pwdLineEdit->setFocus();
        }

    }

    else
    {
        //未查询到用户
        QMessageBox::warning(this,"提示","此用户不存在!请重新输入");
        ui->usrLineEdit->clear();
        ui->pwdLineEdit->clear();
        ui->pwdLineEdit->setF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值