QT之创建登录对话框(十五)
之前我们介绍了对话框的相关知识,那么今天我们就来创建一个登录对话框,包含用户名和密码的这么一个可复用的模板。
需求分析:登录对话框是应用程序中的常用部件。可复用软件部件,获取用户名和密码。最终我们将要做成如下所示的界面:
登录对话框的设计与架构关系如图所示:
我们 Widget 的头文件和 .cpp 文件实现如下所示:
登录界面的头文件如下所示:
其中界面按钮的实现程序如下:
Login 和 Cancel 的点击响应我们就做了打印函数名。
最终构建运行得到的效果图如下所示:
我们现在已经做出大概界面了。但是还存在几个问题:密码是明文,它的界面大小还是可变的。再者我们在登录和取消的时候只是加了打印语句,并没有做相应的处理。那么我们下来就要来解决这几个问题。
我们在帮助中搜索 QLineEdit 关键字,那么就会看见带有 Password 的属性,如下图所示:
那么我们在 QLoginDialog 函数中加上 PwdEdit.setEchoMode(QLineEdit::Password)这句。我们再次构建运行,得到如下所示:就在
那么密码显示的问题我们已经解决,我们再加上之前学过的 setFixedSize函数,那么它的窗口的大小就不可变了。
那么如果我们想要获取用户输入的用户名和密码怎么做呢?就是如何在两个不同对话框间传递数据。通过附加的成员变量和成员函数完成不同对话框间的数据传递!如下:
我们在登录和取消响应的函数中做如下处理:
m_user后面的 .trimmed() 属性意思是去除用户名中的空格。我们在到 Widget 中的 TestBtn_Clicked 函数中添加如下代码:
那么此时我们就能获取到用户名和密码了,构建运行下。效果图如下所示:
如果我们点击的是登录,则会打印出用户名和密码,而且点击完,登录对话框则会消失。如果点击的是取消,则不会打印什么东西,对话框消失。
本节我们先学习到这了,基本目的已经达成。我们通过本节总结如下:登录对话框可作为可复用对的软件部件进行开发;对话框之间是通过成员变量和成员函数进行数据的传递的,具体来说就是将用户数据保存在私有成员变量中,通过共有成员函数进行数据的传递。
那么后面我们会进行进一步的开发:例如检查用户名和密码是否为空,就是为空时进行错误提示; 登录对话框里面的随机码的验证,当验证码输入错误时进行提示,验证码随机刷新等。 我们会在后面继续进行试验。