1.下面添加代码来实现使用用户名和密码登录,这里只是简单将用户名和密码设置为了固定的字符串,如果以后学习了数据库,还可以通过读取数据库来获取用户名和密码。到logindialog.cpp文件中将登录按钮的单击信号对应的槽的代码更改为:
 
void LoginDialog::on_loginBtn_clicked()
{
    // 判断用户名和密码是否正确,
    // 如果错误则弹出警告对话框
    if(ui->usrLineEdit->text() == tr("yafeilinux") &&
           ui->pwdLineEdit->text() == tr("123456"))
    {
       accept();
    } else {
       QMessageBox::warning(this, tr("警告!"),
                   tr("用户名或密码错误!"),
                   QMessageBox::Yes);
    }
}
 
 
       Qt中的QMessageBox类提供了多种常用的对话框类型,比如这里的警告对话框,还有提示对话框、问题对话框等。这里使用了静态函数来设置了一个警告对话框,这种方式很便捷,其中的参数依次是:this表明父窗口是登录对话框、窗口标题、界面显示的内容和最后要显示的按钮,这里使用了一个Yes按钮。注意还要添加该类的头文件包含,即:#include 。
 
2.下面运行程序,如果输入用户名为“yafeilinux”,密码为“123456”,那么可以登录,如果输入其他的字符,则会弹出警告对话框,如下图所示。
 
3.对于输入的密码,我们常见的是显示成小黑点的样式。下面点击logindialog.ui文件进入设计模式,然后选中界面上的密码行编辑器,在属性编辑器中将echoMode属性选择为Password。这时再次运行程序,可以看到密码显示已经改变了。如下图所示。
 
       当然,除了在属性编辑器中进行更改,也可以在loginDialog类的构造函数中使用setEchoMode(QLineEdit::Password)函数来设置。
 
4.在行编辑器的属性栏中还可以设置占位符,就是没有输入信息前的一些提示语句。例如将密码行编辑器的placeholderText属性更改为“请输入密码”,将用户名行编辑器的更改为“请输入用户名”,运行效果如下图所示。
 
5.对于行编辑器,还有一个问题就是,比如我们输入用户名,在前面添加了一个空格,这样也可以保证输入是正确的,这个可以使用QString类的trimmed()函数来实现,它可以去除字符串前后的空白字符。下面将logindialog.cpp文件中登录按钮单击信号槽函数中的判断代码更改为:
 
if(ui->usrLineEdit->text().trimmed() == tr("yafeilinux")
            && ui->pwdLineEdit->text() == tr("123456"))
 
 
       这时运行程序,已经实现相应的功能了。
 
6.最后,当登录失败后,我们希望可以清空用户名和密码信息,并将光标定位到用户名输入框中。这个可以通过在判断用户名和密码错误后添加相应的代码来实现:
 
 
else {
QMessageBox::warning(this, tr("警告!"),
                     tr("用户名或密码错误!"),
                     QMessageBox::Yes);
// 清空内容并定位光标
ui->usrLineEdit->clear();
ui->pwdLineEdit->clear();
ui->usrLineEdit->setFocus();
}
 
 
       下面运行程序,大家可以测试一下效果。
 
7.这里再补充一个技巧,就是Qt Creator的代码补全功能。Qt Creator拥有强大的代码补全功能,比如输入一个关键字时,只要输入前几个字母,就会弹出相关的关键字选择列表;输入完一个对象,然后输入点以后,就会弹出该对象所有可用的变量和函数。这里要说的是,当输入一个比较长得函数或变量名时,可以通过其中的几个字母来定位。比如说,要输入前面讲到的setFocus()函数,那么只需输入首字母s和后面的大写字母F即可,这样可以大大缩减提示列表,如果还没有定位到,那么可以输入F后面的字母o,定位到需要的函数后,直接按下回车键即可完成输入。如下图所示。
 
       还可以使用ctrl + 空格键来强制代码补全,不过这个一般会和我们的输入法的快捷键冲突,大家可以更改输入法的快捷键,也可以在Qt Creator中的工具→选项→环境→键盘中来设置快捷键。

qt的登录设置(转)的更多相关文章

  1. Qt 用户登录界面

     使用QT创建自己的登录窗口: 主要步骤:    1.窗口界面的绘制     2.沟通数据库进行密码验证 void MainWindow::on_pushButton_clicked() { // 连 ...

  2. QT:给Widget设置背景图片——设置Widget的调色板,调色板使用图片和背景色

    QT:给Widget设置背景图片 1 /*2 * set background image3 */4 QPixmap bgImages(":/images/bg.png");5 Q ...

  3. ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决

    最近在做hadoop,因为要求各主机之间的用户必须相同,且为方便远程登录,需配置无密码登录 先附上ssh无密码登录设置方法: 先生成密钥并配置无ssh无密码登录本机,输入命令: ssh-keygen ...

  4. WPF仿网易云音乐系列(二、歌单创建窗口+登录设置模块)

    老衲牺牲午休时间写博客,都快把自己感动了,-_-!! 之前上一篇随笔,我看了下评论,有部分人说WPF已经凉凉了,这个我觉得,这只是一个达到自己目的的工具而已,只要自己能用这个工具,得心应手的做出自己想 ...

  5. Linux免密码登录设置

    Linux免密码登录设置 假设要登录的机器为192.168.1.100,当前登录的机器为192.168.1.101. 首先在101的机器上生成密钥(如果已经生成可以跳过): $ ssh-keygen ...

  6. Windows2008R2允许多用户远程登录设置

    Windows 2008 R2终端服务器安装配置 后面的一律下一步就可以安装完成了,下面是如何设置多用户远程登陆. Windows2008允许多用户远程登录设置 服务器重启,以上配置全部生效.

  7. ubuntu首次给root用户设置密码和root用户登录设置

    1 ubuntu首次给root用户设置密码 给root用户设置密码输入命令sudo passwd,然后系统会让你输入密码,这时输入的密码就是root用户的密码了,设置完成之后就可以切换root用户登录 ...

  8. WIN7开机自动登录设置

    WIN7开机自动登录设置 1    执行rundll32 netplwiz.dll,UsersRunDll 开始菜单中找到运行并单击运行:如下图1所示                         ...

  9. 网络实验 02-交换机的Telnet远程登录设置

    交换机的Telnet远程登录设置 一.实验目标 掌握采用telnet方式配置交换机的方法 二.技术原理 1. 配置交换机的管理IP地址(计算机的IP地址与交换机管理IP地址在同一网段) 2. 为tel ...

随机推荐

  1. Appium python自动化测试系列之元素的定位(六)

    ​6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...

  2. TP view中跳转到某个控制器

    #直接用 __MODULE__/控制器名/方法名/参数名/参数 <a href="__MODULE__/Product/list_table/goods_id/<?php ech ...

  3. Spring MVC文件上传处理

    以下示例显示如何在使用Spring Web MVC框架的表单中上传文件和处理.首先使用Eclipse IDE来创建一个WEB工程,实现一个上传文件并保存的功能.并按照以下步骤使用Spring Web ...

  4. python 爬虫2 Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. import url ...

  5. android EditText 限定中文个数与英文个数的解决方式

    EditText 限定中文8个英文16个的解决方法. 在EditText上控件提供的属性中有限定最大最小长度的方法. 可是,对于输入时,限定中文8个英文16个时,怎么办?相当于一个中文的长度是两个英文 ...

  6. Codeforces 455A Boredom 取数字的dp

    题目链接:点击打开链接 给定一个n长的序列 删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失.即无法获得这2个数的分数 问最高得分. 先统计每一个数出现的次数.然后dp一 ...

  7. android中TabHost和RadioGroup

    android底部菜单应用 博客分类: android--UI示例 TabHostMenuRadioGroupButton  在android中实现菜单功能有多种方法. Options Menu:用户 ...

  8. python3 - 生成器genarator

    在Python中,这种一边循环一边计算的机制,称为生成器:generator. 生成器保存的是算法,每次调用 next() ,就计算出 下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出 ...

  9. uva 12730(期望经典)

    选自: http://blog.csdn.net/myhelperisme/article/details/39724515 用dp(n)表示有n个位置时的期望值,那么,对于一个刚进来的人来说,他有 ...

  10. Splitting Pile

    Splitting Pile Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement Snuke a ...