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登录对话框(设计器实现)相关推荐

  1. Qt 制作登录对话框

    Qt 制作登录对话框 版本说明 版本 作者 时间 备注 0.1 loon 2018.10.24 初步制作出登录对话框 目录 文章目录 Qt 制作登录对话框 版本说明 目录 一.需求与目的 二.实现方案 ...

  2. 三、Qt Creator登录对话框

    实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框. 实现原理: 通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以 ...

  3. Qt笔记之使用设计器自定义窗口标题栏

    1.在窗口显示之前,设置WindowFlags为FramelessWindowHint,以产生一个没有边界的窗口 例如 Widget::Widget(QWidget *parent) :QWidget ...

  4. qt插件开发python_Qt5 Matplotlib设计器插件

    下面是Qt Designer的MatplotlibPlugin的PyQt5版本.在 要使用它,请将这两个文件放在PYQTDESIGNERPATH环境变量中包含的目录中,或者放在directories ...

  5. QT设计器主界面中文介绍

    在Qt程序开发过程中,除可以通过手动写代码实现软件开发功能外,还可以通过Qt的GUI界面设计器(Qt Designer)进行界面的绘制和布局.该工具提供了Qt的基本可绘制窗口部件,如QWidget.Q ...

  6. QT开发(六十六)——登录对话框的验证机制

    QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...

  7. 【Qt】Qt登录对话框(纯代码实现)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序设计 04. 程序测试 05. 预留 06. 附录 01. 概述 实现登录对话框. 02. 开发环境 Windows系 ...

  8. linux QT 结束当前进程_Qt编写控件属性设计器7-串口采集

    一.前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口.网络.数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示. ...

  9. c++ qt qlistwidget清空_Qt编写控件属性设计器12-用户属性

    一.前言 用户属性是后面新增加的一个功能,自定义控件如果采用的Q_PROPERTY修饰的属性,会自动识别到属性栏中,这个一般称为控件属性,在组态设计软件中,光有控件本身的控件属性还是不够的,毕竟这些属 ...

最新文章

  1. 网页加载出现没有合适的负载均衡器_终于讲清楚了,什么是负载均衡(Load balancing)...
  2. 期末数据结构复习稳过不挂指南(更新中)
  3. 计算机网络核心知识(上)
  4. sql server 2005日志文件过大问题解决后分析--针对发布订阅产生的日志问题
  5. 深入理解Mysql - 事务与锁原理
  6. php 7 class 初始化 销毁_在 PHP 中使用和管理 Session
  7. html周报模板,工作周报模板(标准)
  8. 微信扫一扫服务器地址,微信扫一扫
  9. cad迷你看图免费版|cad迷你看图电脑版免费版下载 v2019R8
  10. 小米10获取root权限_安卓刷机搞机小能手必备的三款root神器 最后一款你肯定用过...
  11. 计算机桌面性能3.3,显卡天梯图2018年3月最新版 三月桌面显卡性能排行
  12. 学员管理系统(完整版附带源码)
  13. 收集欢太积分可参与丰富的用户活动,还有丰厚的福利可以领取~
  14. 如何将excel表中的多行数据合并到一行
  15. C++:内存管理:C++内存管理详解
  16. poiExcel格式设置,很好用,感谢大佬
  17. python中如何打出字符π
  18. 【普组模拟赛】马球比赛(polo.pas/cpp
  19. 达梦数据库安装方法以及注意事项
  20. python画彩色立体柱状图

热门文章

  1. 西南往事回忆录—工作点滴
  2. 【数据结构总结】第四章:串、数组和广义表(线性结构)
  3. 7-35 蒙特卡罗方法求圆周率 (30 分)
  4. 特效html布局,一些好玩的css特效
  5. C语言学习之函数调用递归问题,有5个学生坐在一起,问第5个学生多少岁?
  6. 你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息...
  7. 【mysql的编程专题⑥】视图
  8. 软件登录界面设计分享
  9. Android 代码实现整数处理为小数,Android EditText限制输入整数和小数的位数的方法示例...
  10. [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及