超酷模仿LOL界面用Qt实现连接mysql数据库登陆,并记住账号——附代码下载、mysql驱动

1 效果

有背景音乐,登陆成功背景音乐消失,返回登陆,又有背景音乐。登陆账号和密码为空都会报错,并且重设焦点为空的控件上。账号密码存在mysql数据库中,使用mysqlsql驱动连接,查询库中表验证账号密码。

窗口边框圆角化(后补):
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 核心代码

连接数据库:

static bool createConnection(){


    //连接第一个数据库
    //QMYSQL
    QSqlDatabase db2 = QSqlDatabase::addDatabase("QMYSQL", "connection1");
    db2.setHostName("127.0.0.1");
    db2.setUserName("root");
    db2.setPassword("root");
    db2.setPort(8889);
    //test_majiang.db
    db2.setDatabaseName("test_majiang");

    if (!db2.open()) {
        //critical(QWidget *parent, const QString &title,
        //const QString &text,
        //QMessageBox::StandardButtons buttons = Ok,
        //QMessageBox::StandardButton defaultButton = NoButton)
           QMessageBox::critical(0, "Cannot open database",
                                 "Unable to establish a database connection", QMessageBox::Cancel);
           return false;
       }

    return true;
}

验证密码:

void Login::on_lButton_clicked()
{
    username = ui->aComboBox->currentText() ;
    password = ui->pLineEdit->text();

    //qDebug() << "username" <<username<< endl;
    //qDebug() << "password" << password <<endl;

    if(username.isEmpty()){
        QMessageBox::information(this, tr("请输入账号"),tr("请先输入账号再登陆,谢谢!"),
                                 QMessageBox::Ok);
        ui->aComboBox->setFocus();
    }else if(password.isEmpty()){
        QMessageBox::information(this, tr("请输入密码"),tr("请先输入密码再登陆,谢谢!"),
                                 QMessageBox::Ok);
        ui->pLineEdit->setFocus();
    }else{
    if(!createConnection()){
        QMessageBox::information(this, tr("提示"),tr("请先连接网络,谢谢!"),
                                 QMessageBox::Ok);
    }else{
    QSqlDatabase db = QSqlDatabase::database("connection1");
    QSqlQuery query(db);

    QString str = QString("select * from user where account = '%0' and password = '%1'").arg(username).arg(password);
    query.exec(str);
    int record = query.size();
    qDebug() << "record:" << record<< endl;

    //未连接上数据库返回-1,连接上查询失败返回0,查到返回1
    if(record == -1 || record == 0){
         QMessageBox::information(this,tr("提示"),tr("用户名或密码错误!"),QMessageBox::Ok);
         ui->pLineEdit->clear();
         ui->pLineEdit->setFocus();
    }else{
        QMessageBox::information(this,tr("提示"),tr("登陆成功!"),QMessageBox::Ok);
        //QDialog::accept();

        if(isrembered == 1){
            m_userNameList.push_front(username);
            writeUsernameList(m_userNameList);

        }
        emit mainwidgetShow();
        ui->aComboBox->clear();
        music->stop();
        this->close();
    }
   }
  }
}

边框去圆角化:

  QBitmap bmp(this->size());
     bmp.fill();
     QPainter p(&bmp);
     p.setPen(Qt::NoPen);
     p.setBrush(Qt::black);
     p.setPen(Qt::transparent);//表示RGBA值为(0,0,0,0)的透明色。
     p.setRenderHint(QPainter::Antialiasing); // 反锯齿;
     p.drawRoundedRect(bmp.rect(), 20, 20);
     setMask(bmp);

读入ini配置中的账号到ComboBox的下拉框中:

QString fileName = QCoreApplication::applicationDirPath() + "/login.ini";
    IniFile iniUsername(fileName);
    m_userNameList = iniUsername.getValue(QString("config"),QString("username"));
    ui->accountComboBox->addItems(m_userNameList);

    if(m_userNameList.size()>0){
        username = m_userNameList.at(0);
        qDebug() <<"m_userNameList.at(0)" << m_userNameList.at(0);
    }

    if(isrembered == 1)
    {
        ui->accountCheckBox->setChecked(true);
        ui->accountComboBox->setCurrentText(username);
    }

写入记住的账号到ini文件中:

 QString fileName = QCoreApplication::applicationDirPath() + "/login.ini";
    IniFile iniUsername(fileName);
    iniUsername.offCoverWrite();
    iniUsername.onValueDeduplication();
    iniUsername.onInsertDeduplication();
    iniUsername.saveValue(QString("config"),QString("username"), values);

动态背景:

  QMovie *iconShow = new QMovie(":/image/yasuo.gif");
    ui->backgroundLabel->setMovie(iconShow);
    iconShow->start();

循环播放背景音乐:

  QMediaPlaylist *playlist = new QMediaPlaylist();
    playlist->addMedia(QUrl("qrc:/music/LOL.mp3"));
    playlist->setPlaybackMode(QMediaPlaylist::Loop);

    backgroundMusic = new QMediaPlayer();
    backgroundMusic->setPlaylist(playlist);
    backgroundMusic->play();

3 代码下载

有积分的支持一下,谢谢:
https://download.csdn.net/download/qq_33375598/12345205
没有积分也可以下载的github地址,欢迎start:
https://github.com/fanxinglanyu/QtLogin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星蓝雨

如果觉得文章不错,可以请喝咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值