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

news/2024/11/30 18:31:48/

文章目录

  • 1 效果
  • 2 核心代码
  • 3 代码下载

1 效果

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

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

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

2 核心代码

连接数据库:

static bool createConnection(){//连接第一个数据库//QMYSQLQSqlDatabase db2 = QSqlDatabase::addDatabase("QMYSQL", "connection1");db2.setHostName("127.0.0.1");db2.setUserName("root");db2.setPassword("root");db2.setPort(8889);//test_majiang.dbdb2.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,查到返回1if(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


http://www.ppmy.cn/news/761176.html

相关文章

CSS 颜色 字体 背景 文本 边框 列表 display属性

1 颜色属性 <div style"color:blueviolet">ppppp</div><div style"color:#ffee33">ppppp</div><div style"color:rgb(255,0,0)">ppppp</div><div style"color:rgba(255,0,0,0.5)">ppppp&l…

android 弹窗有边框_android中常用的弹出提示框

我们在平时做开发的时候&#xff0c;免不了会用到各种各样的对话框&#xff0c;相信有过其他平台开发经验的朋友都会知道&#xff0c;大部分的平台都只提供了几个最简单的实现&#xff0c;如果我们想实现自己特定需求的对话框&#xff0c;大家可能首先会想到&#xff0c;通过继…

Web前端大作业——基于HTML+CSS+JavaScript仿英雄联盟LOL游戏网站

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

android 弹窗有边框_常用的android弹出对话框

我们在平时做开发的时候&#xff0c;免不了会用到各种各样的对话框&#xff0c;相信有过其他平台开发经验的朋友都会知道&#xff0c;大部分的平台都只提供了几个最简单的实现&#xff0c;如果我们想实现自己特定需求的对话框&#xff0c;大家可能首先会想到&#xff0c;通过继…

微信开发之小程序分享设置图片标题

在js文件中写入一下代码 /*** 设置分享的名称和logo*/onShareAppMessage() {return {title: WebJob,imageUrl: https://ossweb-img.qq.com/images/lol/web201310/skin/big84000.jpg,path: /pages/index/index}}, 页面中有可以触发转发事件的地方有两个&#xff1a; 一个是右上…

lol进入服务器后显示3秒白屏,LOL:盘点新客户端出现的BUG,及可行的解决方法...

原标题&#xff1a;LOL&#xff1a;盘点新客户端出现的BUG&#xff0c;及可行的解决方法 自从LOL客户端强制改版后&#xff0c;引发无数人的吐槽。虽然相对新客户端来说&#xff0c;玩家熟悉度更高&#xff0c;BUG基本上也没有。但是老客户端不也是慢慢的更新换代而来的吗&…

html 一行显示边框线,HTML 网页中要显示出来一个虚线的边框 就是一行字在边框里面,那个边框是显示出来的,程式码应该怎么写?...

HTML 网页中要显示出来一个虚线的边框 就是一行字在边框里面,那个边框是显示出来的,程式码应该怎么写?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! HTML 网页中要显示出来一个虚线的边框 就是一行字在边框…

vuex缓存接口返回的数据,只在首次使用调用接口,之后使用vuex中的缓存值

场景&#xff1a;同一个接口在多个页面调用 问题&#xff1a;重复访问&#xff0c;导致对服务器的重复请求&#xff0c;降低用户体验。 解决&#xff1a;使用vuex的异步处理&#xff0c;第一次访问时将数据缓存&#xff0c;下次访问直接从缓冲中获取&#xff0c;提高访问速度 注…