【Qt】Qt登录对话框(设计器实现)
00. 目录
文章目录
- 00. 目录
- 01. 概述
- 02. 开发环境
- 03. 程序设计
- 04. 登录判断
- 05. 程序测试
- 06.附录
01. 概述
在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框。
02. 开发环境
Windows系统:Windows10
Qt版本:Qt5.15或者Qt6
03. 程序设计
3.1 新建Qt Widgets Application,项目名称为login,类名和基类保持MainWindow和QMainWindow不变。
3.2 完成项目创建后,向项目中添加新的Qt设计师界面类,模板选择Dialogwithout Buttons,类名更改为LoginDialog。完成后向界面上添加两个标签Label、两个行编辑器Line Edit和两个按钮Push Button,设计界面如下图所示。
3.3 先选中用户名后面的行编辑器部件,然后在属性编辑器中将其objectName属性更改为usrLineEdit,如下图所示。下面依次更改其他部件的objectName属性,密码后面的行编辑器为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。
3.4 下面使用另外一种信号和槽的关联方法来设置退出按钮。在设计模式下方的信号和槽编辑器(Signals & Slots Editor)中,先点击左上角的绿色加号添加关联,然后选择发送者为exitBtn,信号为clicked(),接收者为LoginDialog,槽为close()。如下图所示。这样,当单击退出按钮时,就会关闭登录对话框。
3.5 右击登录按钮,在弹出的菜单中选择“转到槽…”,然后选择clicked()信号并确定。转到相应的槽以后,添加函数调用:
void LoginDialog::on_loginBtn_clicked()
{accept();
}
3.6 main.cpp文件,更改内容如下:
int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;LoginDialog dlg;if (dlg.exec() == QDialog::Accepted){w.show();return a.exec();}else{return 0;}
}
运行程序,按下退出按钮会退出程序,按下登录按钮会关闭登录对话框,并显示主窗口。
04. 登录判断
4.1 接下来添加代码来实现使用用户名和密码登录,这里只是简单将用户名和密码设置为了固定的字符串,如果以后学习了数据库,还可以通过读取数据库来获取用户名和密码。到logindialog.cpp文件中将登录按钮的单击信号对应的槽的代码更改为:
void LoginDialog::on_loginBtn_clicked()
{//判断用户名和密码是否正确if (ui->usrLineEdit->text() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用户名和密码错误"),QMessageBox::Yes);}
}
4.2 下面运行程序,如果输入用户名为“tom”,密码为“123456”,那么可以登录,如果输入其他的字符,则会弹出警告对话框,如下图所示。
4.3 对于输入的密码,我们常见的是显示成小黑点的样式。下面点击logindialog.ui文件进入设计模式,然后选中界面上的密码行编辑器,在属性编辑器中将echoMode属性选择为Password。
这时再次运行程序,可以看到密码显示已经改变了。如下图所示。
当然,除了在属性编辑器中进行更改,也可以在loginDialog类的构造函数中使用setEchoMode(QLineEdit::Password)函数来设置。
4.4 在行编辑器的属性栏中还可以设置占位符,就是没有输入信息前的一些提示语句。例如将密码行编辑器的placeholderText属性更改为“请输入密码”,将用户名行编辑器的更改为“请输入用户名”。
运行效果如下图所示
4.5 对于行编辑器,还有一个问题就是,比如我们输入用户名,在前面添加了一个空格,这样也可以保证输入是正确的,这个可以使用QString类的trimmed()函数来实现,它可以去除字符串前后的空白字符。下面将logindialog.cpp文件中登录按钮单击信号槽函数中的判断代码更改为
void LoginDialog::on_loginBtn_clicked()
{//判断用户名和密码是否正确if (ui->usrLineEdit->text().trimmed() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用户名和密码错误"),QMessageBox::Yes);}}
4.6 最后,当登录失败后,我们希望可以清空用户名和密码信息,并将光标定位到用户名输入框中。这个可以通过在判断用户名和密码错误后添加相应的代码来实现:
void LoginDialog::on_loginBtn_clicked()
{//判断用户名和密码是否正确if (ui->usrLineEdit->text().trimmed() == tr("tom") &&ui->pwdLineEdit->text() == tr("123456")){accept();}else{QMessageBox::warning(this, tr("警告"), tr("用户名和密码错误"),QMessageBox::Yes);//清空内容,设置定位光标ui->usrLineEdit->clear();ui->pwdLineEdit->clear();ui->usrLineEdit->setFocus();}}
05. 程序测试
06.附录
代码下载:登录对话框(设计器实现).rar
【Qt】Qt登录对话框(设计器实现)相关推荐
- Qt 制作登录对话框
Qt 制作登录对话框 版本说明 版本 作者 时间 备注 0.1 loon 2018.10.24 初步制作出登录对话框 目录 文章目录 Qt 制作登录对话框 版本说明 目录 一.需求与目的 二.实现方案 ...
- 三、Qt Creator登录对话框
实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框. 实现原理: 通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以 ...
- Qt笔记之使用设计器自定义窗口标题栏
1.在窗口显示之前,设置WindowFlags为FramelessWindowHint,以产生一个没有边界的窗口 例如 Widget::Widget(QWidget *parent) :QWidget ...
- qt插件开发python_Qt5 Matplotlib设计器插件
下面是Qt Designer的MatplotlibPlugin的PyQt5版本.在 要使用它,请将这两个文件放在PYQTDESIGNERPATH环境变量中包含的目录中,或者放在directories ...
- QT设计器主界面中文介绍
在Qt程序开发过程中,除可以通过手动写代码实现软件开发功能外,还可以通过Qt的GUI界面设计器(Qt Designer)进行界面的绘制和布局.该工具提供了Qt的基本可绘制窗口部件,如QWidget.Q ...
- QT开发(六十六)——登录对话框的验证机制
QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...
- 【Qt】Qt登录对话框(纯代码实现)
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序设计 04. 程序测试 05. 预留 06. 附录 01. 概述 实现登录对话框. 02. 开发环境 Windows系 ...
- linux QT 结束当前进程_Qt编写控件属性设计器7-串口采集
一.前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口.网络.数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示. ...
- c++ qt qlistwidget清空_Qt编写控件属性设计器12-用户属性
一.前言 用户属性是后面新增加的一个功能,自定义控件如果采用的Q_PROPERTY修饰的属性,会自动识别到属性栏中,这个一般称为控件属性,在组态设计软件中,光有控件本身的控件属性还是不够的,毕竟这些属 ...
最新文章
- 网页加载出现没有合适的负载均衡器_终于讲清楚了,什么是负载均衡(Load balancing)...
- 期末数据结构复习稳过不挂指南(更新中)
- 计算机网络核心知识(上)
- sql server 2005日志文件过大问题解决后分析--针对发布订阅产生的日志问题
- 深入理解Mysql - 事务与锁原理
- php 7 class 初始化 销毁_在 PHP 中使用和管理 Session
- html周报模板,工作周报模板(标准)
- 微信扫一扫服务器地址,微信扫一扫
- cad迷你看图免费版|cad迷你看图电脑版免费版下载 v2019R8
- 小米10获取root权限_安卓刷机搞机小能手必备的三款root神器 最后一款你肯定用过...
- 计算机桌面性能3.3,显卡天梯图2018年3月最新版 三月桌面显卡性能排行
- 学员管理系统(完整版附带源码)
- 收集欢太积分可参与丰富的用户活动,还有丰厚的福利可以领取~
- 如何将excel表中的多行数据合并到一行
- C++:内存管理:C++内存管理详解
- poiExcel格式设置,很好用,感谢大佬
- python中如何打出字符π
- 【普组模拟赛】马球比赛(polo.pas/cpp
- 达梦数据库安装方法以及注意事项
- python画彩色立体柱状图
热门文章
- 西南往事回忆录—工作点滴
- 【数据结构总结】第四章:串、数组和广义表(线性结构)
- 7-35 蒙特卡罗方法求圆周率 (30 分)
- 特效html布局,一些好玩的css特效
- C语言学习之函数调用递归问题,有5个学生坐在一起,问第5个学生多少岁?
- 你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息...
- 【mysql的编程专题⑥】视图
- 软件登录界面设计分享
- Android 代码实现整数处理为小数,Android EditText限制输入整数和小数的位数的方法示例...
- [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及