Qt Creator登录对话框

2023-11-05

实现功能:

在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则进入主窗口,如果有错则弹出警告对话框。

实现原理:

通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以用if语句进行判断。

实现过程:

1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为Base class,这样便建立了主窗口。文件列表如下:

 

2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下:

 

3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。

4.将exitBtn的单击后效果设为退出程序,关联如下:

 

5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写入一句

    void loginDlg::on_loginBtn_clicked()
{
    accept();
}

6.改写main.cpp:

#include <QtGui/QApplication>
#include "widget.h"
#include "logindlg.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    loginDlg login;
    if(login.exec()==QDialog::Accepted)
    {
        w.show();
        return a.exec();
    }
    else return 0;

}

7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。

8.添加用户名密码判断功能。将登陆按钮的槽函数改为:

void loginDlg::on_loginBtn_clicked()

{

if(ui->usrLineEdit->text()==tr("qt")&&ui->pwdLineEdit->text()==tr("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

//如果不正确,弹出警告对话框

}

}

并在logindlg.cpp中加入#include <QMessageBox>的头文件。如果不加这个头文件,QMessageBox类不可用。

9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主窗口了,如果输入错了,就会弹出警告对话框。

 

 

 

10.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示为小黑点。

loginDlg::loginDlg(QWidget *parent) :

QDialog(parent),

ui(new Ui::loginDlg)

{

ui->setupUi(this);

ui->pwdLineEdit->setEchoMode(QLineEdit::Password);

}

效果如下:

11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序按错误的用户名对待了。

 

我们可以更改if判断语句,使这样的输入也算正确。

void loginDlg::on_loginBtn_clicked()

{

if(ui->usrLineEdit->text().trimmed()==tr("qt")&&ui->pwdLineEdit->text()==tr("123456"))

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

}

}

加入的这个函数的作用就是移除字符串开头和结尾的空白字符。

12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽函数如下:

void loginDlg::on_loginBtn_clicked()

{

if(ui->usrLineEdit->text().trimmed()==tr("qt")&&ui->pwdLineEdit->text()==tr("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

//如果不正确,弹出警告对话框

ui->usrLineEdit->clear();//清空用户名输入框

ui->pwdLineEdit->clear();//清空密码输入框

ui->usrLineEdit->setFocus();//将光标转到用户名输入框

}

}

最终的loginDlg.cpp文件如下图:

上述的源代码地址:http://download.csdn.net/detail/pengrui18/4541599

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Creator登录对话框 的相关文章

  • Qt + win32 + mingw 上的原生 Windows API 链接问题

    我正在尝试使用 mingw 工具集将本机 Windows API 与 Qt 结合使用 部分功能存在链接问题 会发生什么 这是 mingw 名称修改的错误吗 ifdef Q WS WIN HWND hwnd QWidget winId HDC
  • 通过对 XmlHttpRequest (REST) 的响应在 QML 中显示图像

    我需要从 REST API 调用中获取 jpeg 图像 我使用 XMLHttpRequest 因为请求需要身份验证标头 即我不能只创建一个图像并将源设置为带有 user passwd url 的 URL 我认为我可以通过将 REST 数据设
  • 在哪里可以找到 Qt 的 dll 的 pdb 文件?

    我正在调试 Qt 应用程序 在哪里可以找到 Qt 的调试 dll 我在windows上使用的是vs2010 它说它需要 Qt 中的许多 dll 的 pdb 文件 从 Qt 5 9 开始 与 Windows 发行版相对应的 PDB 可作为单独
  • QT 中的应用程序->处理消息?

    在 Borland 6 中 我经常使用它来解除程序操作的卡住 Application gt Processmessages 现在 对于 QT 4 8 1 我在这个外国 对我来说 QT 文档中找不到 谁能帮我 在 Qt 中 您可以使用静态函数
  • QToolBar 的菜单延迟

    我通过制作 QAction 并向其添加 QMenu 在 QToolBar 上有一个菜单 如何消除单击图标时出现菜单之前的延迟 QToolBar myToolBar new QToolBar this QAction myAction new
  • 如何恢复 QSS 属性的默认系统值?

    如果父级之一将其样式表设置为 Qt QSS 会传播给子级color red 它的所有子级都将应用此样式表 如果你明确设置QLabel color red 那么只有 QLabel 子项会受到关注 如果子项设置自己的值 则可以覆盖子项的样式表c
  • [本机]:在Qt for Android中使用Java函数和第3方库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我用qt写了一个android应用程序 但我有一个很大的问题 我可以使用 调用一些原生的android API 比如调用特殊的activit
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 如何将图标放置到 QLineEdit 上?

    stackoverflow com 网站的右上角有一个带有放大镜头的搜索字段和一个灰色的 搜索 关键字 我想知道是否有可能实现相同的外观QLineEdit 如果是这样那怎么办 QLineEdit lineEdit new QLineEdit
  • qt项目如何设置安装路径

    我正在寻找与 qmake configure prefix 等效的内容 基本上 我想覆盖默认的安装 部署目录 这是如何用命令行 qmake 指定的 我还使用 QtCreator 构建了很多 gui 项目 并且我想知道如何在 QtCreato
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • GoQt 致命错误:QAbstractAnimation:没有这样的文件或目录

    我尝试编译 Qt 来开发桌面应用程序 我按照 Qt 网站上的官方 wiki 指南的说明进行操作 当我尝试go run示例文件夹中的示例 我收到错误 去运行 home pinkya rabbit workspace go1programs s
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod

随机推荐

  • 多线程的安全问题一:同步方法与同步代码块

    一 引出线程安全问题 多个线程操作共享数据时 如果线程不完整 则很可能出现线程安全问题 线程执行不确定导致结果不确定 这里有一个三窗口买票程序 共100张票 public class Main2 public static void mai
  • springboot反射自动注入bean

    一 Java通过反射获取对象 执行方法 import java lang reflect Method public class Main public static void main String args throws Excepti
  • 树莓派3B开热点并自动启动

    lz最近项目需要 研究了一下树莓派开热点 试了一下几种方法 发现这一种是最简单 也是比较稳定的一种 现介绍如下 用putty或者vnc对树莓派进行操作 如下图示 putty登录界面 VNC登录界面 创建WiFi热点使用的GitHub上一个开
  • 谷歌云:全面推出 AlloyDB for PostgreSQL 与数据库迁移服务

    本文由Cloud Ace 整理发布 Cloud Ace 是谷歌云全球战略合作伙伴 拥有 300 多名工程师 也是谷歌最高级别合作伙伴 多次获得 Google Cloud 合作伙伴奖 作为谷歌托管服务商 我们提供谷歌云 谷歌地图 谷歌办公套件
  • js数组对象 模糊查找 指定 匹配字段内容

    以下内容仅供参考
  • 时序预测

    时序预测 MATLAB实现NGO BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测 目录 时序预测 MATLAB实现NGO BiLSTM北方苍鹰算法优化双向长短期记忆网络时间序列预测 预测效果 基本介绍 程序设计 参考资料 预测效
  • 抽象方法和抽象类

    目录 一 抽象方法和抽象类 1 区分普通方法和抽象方法 2 区分普通类和抽象类 3 定义一个抽象类 4 使用抽象类描述抽象的事物 5 抽象类和抽象方法的优势 6 抽象类的局限性 一 抽象方法和抽象类 1 区分普通方法和抽象方法 1 在Jav
  • PyEcharts——地图-数据可视化-画图

    目录 安装 实例代码 世界地图 中国地图 省份地图 市级地图 热力分布图geo 画地图的开发包包括以下 geopandas itchat basemap matplotlib以及Levenshtein pygal 官方文档 http pye
  • 服务器爬虫网页数据,爬虫(二)—解析真实网页(猫途鹰)

    from bs4 import BeautifulSoup import requests import time urls https www tripadvisor cn Attractions g187147 Activities c
  • 2 天:我用文字 AI-ChatGPT 写了绘画 AI-Stable Diffusion 跨平台绘画应用

    文本 AI ChatGPT 和绘画 AI Stable Diffusion 平地惊雷 突然进入寻常百姓家 如果时间可以快进 未来的人们对于我们这段时光的历史评价 大概会说 当时的人们在短时间连续经历了这几种情感 从不信 去试试看 到远超预期
  • 【hibernate实例】单项多对一增加查找

    创建部门表department 创建雇员表employee 新建持久化类 Department java package www hbsi net many2one public class Department private Integ
  • Android中EditText光标的显示与隐藏方法

    目录 Android EditText的光标的显示和隐藏 Android之第一次不显示EditText光标 总结 Android EditText的光标的显示和隐藏 一 java代码 1 编辑框的光标 显示的方法 1 editText se
  • QML HTTP 请求

    作者 一去 二三里 个人微信号 iwaleon 微信公众号 高效程序员 在 Web 开发中 实现与服务器的通信至关重要 其中 HTTP 便是最常用的方式之一 它是一种客户端 服务器协议 客户端向服务器发送请求 服务器则返回响应 常被用于在浏
  • 树莓派4B(armv7l,arm32)buster安装 Qt5、Eigen 3.4.0、OpenCV 4.5.5、ncnn

    经过长时间尝试 目前确定使用树莓派Raspberry Pi OS 32位 buster 的 Legacy 版本 64位和32位的 bullseye 都用过了 发现还是对现有的包支持的不够好 现在从头开始 希望为时不晚 Raspberry P
  • Ubuntu20.04 安装Anaconda相关记录【换源】【指令】【关闭默认环境】

    打开终端默认使用base环境时关闭base环境 在安装了ubuntu20 04版之后因为使用原因需要在环境中安装Anaconda 参照了网上的安装方式之后发现打开终端的时候会默认打开conda的base环境 应为要安装ROS使用 默认环境使
  • java高并发处理 java处理高并发的几种方法

    一 背景综述 并发就是可以使用多个线程或进程 同时处理 就是并发 不同的操作 高并发的时候就是有很多用户在访问 导致系统数据不正确 糗事数据的现象 对于一些大型网站 比如门户网站 在面对大量用户访问 高并发请求方面 基本的解决方案集中在这样
  • Dubbo分布式日志追踪,多线程不能获取窜ID和IP问题

    接着上一篇日志 当用MDC或者ThreadContext来put或者get数据的时候 不同线程是获取不到的 他们都是ThreadLocal维护 所以线程独立 如果需要子线程获取则将参数传入 在Thread的run方法执行的时候将传入的ID和
  • Ubuntu & CentOS配置JAVA JDK环境

    Linux配置Java JDK 环境 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 根据系统相应版本进行下载
  • 程序流程图

    程序流程图又称程序框图 是以特定图形符号外加文字说明描述程序运行具体步骤的图示 它结合相应的算法 经由处理框 判断框 起止框 连接点 流程线等构成整个流程图 在工作过程中 流程图主要是说明某一特定过程 尤其对于产品经理和交互设计师来说 学会
  • Qt Creator登录对话框

    实现功能 在弹出对话框中填写用户名和密码 按下登录按钮 如果用户名和密码均正确则进入主窗口 如果有错则弹出警告对话框 实现原理 通过上节的多窗口原理实现由登录对话框进入主窗口 而用户名和密码可以用if语句进行判断 实现过程 1 先新建Qt4