QT之创建登录对话框

之前我们介绍了对话框的相关知识,那么今天我们就来创建一个登录对话框,包含用户名和密码的这么一个可复用的模板。

需求分析:登录对话框是应用程序中的常用部件。可复用软件部件,获取用户名和密码。最终我们将要做成如下所示的界面:

登录对话框的设计与架构关系如图所示:

我们 Widget 的头文件和 .cpp 文件实现如下所示:

登录界面的头文件如下所示:

其中界面按钮的实现程序如下:

Login 和 Cancel 的点击响应我们就做了打印函数名。
最终构建运行得到的效果图如下所示:

我们现在已经做出大概界面了。但是还存在几个问题:密码是明文,它的界面大小还是可变的。再者我们在登录和取消的时候只是加了打印语句,并没有做相应的处理。那么我们下来就要来解决这几个问题。
我们在帮助中搜索 QLineEdit 关键字,那么就会看见带有 Password 的属性,如下图所示:

那么我们在 QLoginDialog 函数中加上 PwdEdit.setEchoMode(QLineEdit::Password)这句。我们再次构建运行,得到如下所示:
就在
那么密码显示的问题我们已经解决,我们再加上之前学过的 setFixedSize函数,那么它的窗口的大小就不可变了。
那么如果我们想要获取用户输入的用户名和密码怎么做呢?就是如何在两个不同对话框间传递数据。通过附加的成员变量和成员函数完成不同对话框间的数据传递!如下:

我们在登录和取消响应的函数中做如下处理:

m_user后面的 .trimmed() 属性意思是去除用户名中的空格。我们在到 Widget 中的 TestBtn_Clicked 函数中添加如下代码:

那么此时我们就能获取到用户名和密码了,构建运行下。效果图如下所示:

如果我们点击的是登录,则会打印出用户名和密码,而且点击完,登录对话框则会消失。如果点击的是取消,则不会打印什么东西,对话框消失。
本节我们先学习到这了,基本目的已经达成。我们通过本节总结如下:登录对话框可作为可复用对的软件部件进行开发;对话框之间是通过成员变量和成员函数进行数据的传递的,具体来说就是将用户数据保存在私有成员变量中,通过共有成员函数进行数据的传递。
那么后面我们会进行进一步的开发:例如检查用户名和密码是否为空,就是为空时进行错误提示; 登录对话框里面的随机码的验证,当验证码输入错误时进行提示,验证码随机刷新等。 我们会在后面继续进行试验。

以上内容来自狄泰软件学院的QT教程,欢迎大家一起来学习,可以加我QQ:243343083,一起学习。狄泰技术交流群:199546072 

原文地址:http://blog.51cto.com/12810168/2093494

时间: 2024-11-10 19:35:45

QT之创建登录对话框的相关文章

QT笔记之模态对话框及非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框:另一种是使用show()方法

QT学习之路--创建一个对话框

Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学习之路:Qt学习之路(7):创建一个对话框(上)这个程序.编译出现 invalid use of incomplete type ‘class QPushButton’ findButton->setEnabled(!text.isEmpty()); ^ In file included from

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->addMenu(QString::fromLocal8Bit("对话框")); QAction *pTopDialog = pDialog->addAction(QString::fromLocal8Bit("模态对话框")); connect(pTopDialog,

第19课 Qt中的标准对话框(上)

1. 标准对话框 (1)Qt为开发者提供了一些可复用的对话框类型 (2)Qt提供的可复用对话框全部继承自QDialog类 (3)Qt中的标准对话框遵循相同的使用方式(三板斧) //1.定义对话框对象(第1板斧) DialogType dlg(this); //2.设置对话框属性(第2板斧) dlg.setPropertyXXX(value); if(dlg.exec() == DialogType::value) //3.打开对话框(第3板斧) { //4.获取对话框数据 Type v = dl

Android AlertDialog - 登录对话框

Step 1: 首先设置登录界面 - dialog_login.xml:用户名和密码输入框,以及清除按钮和登录按钮 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/t

在SQL Server 2008 中使用SQL脚本创建登录用户并授权

到处都使用超级用户sa显然是不安全的,因此有创建用户并让其只能访问某个数据库的必要.当然可以使用SQL Server自带的图形界面向导,但是太难用用了!有时候代码比较直接,比如这里: --使用已经创建好的数据库 use mydb GO --创建登录用户和密码 EXEC sp_addlogin N'mydb_user','123456' --使mydb_user成为当前数据库的合法用户 EXEC sp_grantdbaccess N'mydb_user' --授予mydb_user对自己数据库的所

QFileDialog保存打开对话框有两种风格: 在Windows和MacOS X平台上提供本地的对话框 Qt自绘的对话框

1.打开对话框两种风格 (1)本地风格         QFileDialog *fileDialog =new QFileDialog(this);         fileDialog->setWindowTitle(tr("Open Image"));         fileDialog->setDirectory(".");         fileDialog->setFilter(tr("Image Files(*.jpg

ObjectARX 学习笔记007:创建模态对话框的一般步骤

1.新建一个工程,注意将"使用MFC"选项勾上. 2.使用[insert/Resouce]菜单项插入一个对话框. 3.此时会弹出一个窗体,直接按Enter键可以调出[属性]面板.设置窗体的ID和窗体的Caption. 4.可以点击[属性]面板左上角的图钉图标将其常显. 5.向窗体中插入控件,依次设置其ID与Caption. 6.按Ctrl+W为对话框资源创建一个类.此时系统会在工程中添加一个.cpp文件和一个对应的.h文件. 7.注册一个新命令,用于显示新的对话框. 8.在xxxCom

用JS动态创建登录表单,报了个小错误

后来发现原来是: dvObj.style.border='#Red 1px sold'; 其中的Red多谢了一个‘#’, 但是奇怪的是在chrome和firefox都备有报错,但是在ie中报错了. 各位仁兄美眉们一定要小心了额. 下面是这段js动态创建登录框的js代码: 1 onload = function () { 2 var dvObj = document.createElement('div'); 3 dvObj.style.border = 'Red 1px solid'; 4 dv