网站首页 > 博客文章 正文
一、目的
实现简单的类似QQ登录界面的登录对话框,可以输入用户名和密码,有登录和退出按钮,密码密文显示,用户名和密码正确则进入主窗口,错误则进行提示。
二、实现方案说明
我们之前已经实现了多窗口的功能→Qt5-Qt Creator进行多窗口编程,那么思路就很清晰了,程序启动首先进行登录对话框,登录对话框中有输入用户名和密码的LineEdit以及登录和退出的push button,然后写登录槽函数,将退出按钮和程序退出关联。其中登录槽函数进行用户名和密码的验证即可,验证通过则进入主窗口,验证失败则提醒并做一些后续工作。
OK,和之前实现多窗口一样,我们先创建一个基于widget的基础application,然后进入工程后添加文件,添加一个设计师界面类,依然选择dialog without button,然后类名设为loginDlg,接着按照我们的设想在界面文件中拖入对应的控件,然后做一些调整即可。
分别给用户名的lineEdit起名为usrLineEdit、密码的lineEdit起名pwdLineEdit,登录push button起名loginBtn,退出push button起名exitBtn,接着在Signal & Slots Editor中添加退出按钮的点击信号和loginDlg的退出方法的关联,最后右击登录push button选择转到槽去实现其槽函数即可。
三、实现结果展示
用户名为qt,密码为123456,目前是写死的,因为我们没有使用数据库,也没有连接服务器,仅仅是在本地进行简单的测试。
【更多音视频+QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击领取→Qt开发+音视频开发基础知识和资料包
四、代码展示
main.cpp:
#include "widget.h"
#include <QApplication>
#include "logindlg.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
loginDlg login;
if(login.exec() == QDialog::Accepted)
{
w.show();
return a.exec();
}
else return 0;
}
logindlg.cpp:
#include "logindlg.h"
#include "ui_logindlg.h"
#include <QMessageBox>
loginDlg::loginDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::loginDlg)
{
ui->setupUi(this);
ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
}
loginDlg::~loginDlg()
{
delete ui;
}
//登录按钮的槽函数实现
void loginDlg::on_loginBtn_clicked()
{
/*ui->usrLineEdit->text().trimmed():获取用户名,后面的trimmed可以通过F1查看帮助了解其用法;
判断用户名和密码分别符合“qt”和“123456”后调用accept使得main.cpp中条件满足,显示出widget;
判断不符合要求时则用messageBox显示警告信息,然后清空用户名和密码框中的信息,最后将光标集中到usrLineEdit中。
*/
if(ui->usrLineEdit->text().trimmed() == tr("qt") && ui->pwdLineEdit->text() == tr("123456"))
accept();
else
{
QMessageBox::warning(this, tr("Warning"), tr("user name or password error!"),QMessageBox::Yes);
ui->usrLineEdit->clear();
ui->pwdLineEdit->clear();
ui->usrLineEdit->setFocus();
}
}
五、最后
这里仅仅实现了最初级的登录会话框,主要是对多窗口的一个应用以及阐述一下如何获取Qt自带的帮助信息,让我们更好的去阅读一些Qt的源码。
- 上一篇: Qt 窗口部件(qt新窗口)
- 下一篇: 从零开始学Qt(39):QFileDialog对话框的使用
猜你喜欢
- 2025-01-23 Qt添加图标(qt中添加图片)
- 2025-01-23 Mac上调试QT客户端(qt在mac下开发)
- 2025-01-23 Qt使用教程:指定生成设置(二)(qt如何使用c++)
- 2025-01-23 QT实现简单的上位机软件(基于qt的上位机 开发需要用到哪些内容)
- 2025-01-23 Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
- 2025-01-23 Qt使用QSS(qt弹出子窗体后,父窗体按钮不可以使用)
- 2025-01-23 Qt入门_设计find对话框(qt怎么设置对话框大小固定)
- 2025-01-23 从零开始学Qt(39):QFileDialog对话框的使用
- 2025-01-23 Qt 窗口部件(qt新窗口)
- 2025-01-23 QT学习:statusBar的使用,创建控件添加到statusBar上面
你 发表评论:
欢迎- 最近发表
-
- 印度IT咨询公司Infosys 获得谷歌5亿美元大单
- 印度信息技术巨头Infosys对地球观测初创公司GalaxEye进行战略投资
- 你没见过的分库分表原理解析和解决方案(二)
- 安装MySQL(绿联nas安装mysql)
- SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
- 高效使用Java构建工具,Maven篇|云效工程师指北
- Java,screw,生成简洁好用的数据库表结构(html、doc、md)文档
- SpringBoot数据库操作的应用(springboot如何操作数据库)
- Mac Docker环境,利用Canal实现MySQL同步ES
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)