QT实现窗口的账户以及密码判断登录和退出

这篇具有很好参考价值的文章主要介绍了QT实现窗口的账户以及密码判断登录和退出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、作业要求:

1、找出槽函数调用两次的原因

        在Qt中使用信号调用槽函数时,当槽函数的函数名定义格式为 “on_对象名_信号”时,则不需要在使用connect来连接信号与槽函数,系统会自动连接信号与槽函数。如果再次使用了connect来连接,则会调用两次槽函数。

2、完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面

实现过程:

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:
    void onclose();
    void sign();


private:
    QLabel *lab1;       //无参构造
    QLabel *lab2;       //定义标签,顺便指定父组件
    QLabel *lab3;       //定义标签,顺便指定父组件
    QLineEdit *edit1;        //无参构造
    QLineEdit *edit3;
    QPushButton *btn;  //无参构造
    QPushButton *btn1;    //构造按钮时,指定父组件
    QMessageBox *box;       //弹窗

    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

源文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QDebug>
#include <QMessageBox>
//完善登录界面,登录按钮对应的槽函数中,判断所填写账户密码是否正确,默认账户“admin”,密码“123456”,
//如果匹配成功,则输出登录成功并关闭界面,如果登录失败,输出登录失败,并清空密码框中的内容,点击取消按钮,则关闭界面
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置窗口标题
    this->setWindowTitle(QString("QQ"));       //使用匿名对象进行传递
    //设置窗口图标
    this->setWindowIcon(QIcon("F:/2022_Cplus_pro/day8/01_frame/1.png"));

    //设置固定尺寸
    this->setFixedSize(800,600);

    //定义标签Lable
    lab1=new QLabel;       //无参构造
    lab1->setParent(this);         //设置父组件
    lab1->setText("账户:");          //设置文本信息
    lab1->move(230,250);           //移动组件位置
    lab1->resize(200,40);

    lab2=new QLabel(this);       //定义标签,顺便指定父组件
    lab2->setText("密码:");             //设置文本信息
    lab2->move(230,330);
    lab1->resize(200,40);

    lab3=new QLabel(this);       //定义标签,顺便指定父组件
    lab3->resize(800,200);
    lab3->setScaledContents(true);
    lab3->setPixmap(QPixmap("F:/2022_Cplus_pro/day8/01_frame/2.png"));

    //定义行编辑器edit
    edit1=new QLineEdit;        //无参构造
    edit1->setParent(this);                 //设置父组件
    edit1->move(300,250);                 //移动组件位置
    edit1->resize(200,40);

    edit3=new QLineEdit(this);
    edit3->move(300,330);                 //移动组件位置
    edit3->setEchoMode(QLineEdit::Password);
    edit3->resize(200,40);

    //自定义一个按钮button
     btn=new QPushButton;  //无参构造
     btn->setParent(this);      //设置父组件函数
     btn->resize(80,40);       //重新设置按钮框大小
     btn->setText("登录");        //设置按钮上的文本信息
     btn->move(400,400);            //移动组件位置

     //定义按钮1,顺便指定父组件
     btn1=new QPushButton(this);    //构造按钮时,指定父组件
     btn1->setText("按钮1");                     //设置按钮上的文本信息
     btn1->resize(80,40);                        //重新设置按钮框大小
     btn1->setText("取消");                      //设置按钮上的文本信息
     btn1->move(500,400);                       //移动组件位置

     connect(btn1,SIGNAL(clicked()),this,SLOT(onclose()));      //连接按钮btn1关闭窗口信号和槽函数
     connect(btn,SIGNAL(clicked()),this,SLOT(sign()));          //连接按钮btn登录信号和槽函数
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::sign()     //登录槽函数
{
    box=new QMessageBox;                        //弹窗
    box->setWindowTitle("提示");
    if(QString(this->edit1->text())=="admin")
        if(QString(this->edit3->text())=="123456")
        {
                box->setText("登录成功");
                box->show();
                box->exec();//等待用户响应
                close();
        }
        else if(QString(this->edit3->text())==0)
        {
            box->setText("请输入密码");
            box->show();//展示
            box->exec();//等待用户响应
        }
        else
        {
            box->setText("密码错误");
            this->edit3->clear();
            box->show();//展示
            box->exec();//等待用户响应
        }
    else if(QString(this->edit1->text())==0)
    {
        box->setText("请输入账号");
        box->show();//展示
        box->exec();//等待用户响应
    }
    else
    {
        box->setText("账号错误");
        box->show();//展示
        box->exec();//等待用户响应
    }
}

void MainWindow::onclose()          //退出槽函数
{  
    close();
}

 文章来源地址https://www.toymoban.com/news/detail-599832.html

测试文件

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

实现效果:

qt账号密码,ui,qt,开发语言

 qt账号密码,ui,qt,开发语言

 

到了这里,关于QT实现窗口的账户以及密码判断登录和退出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端登录退出:处理Token问题(获取、缓存、失效处理)以及代码实现

    Token是服务端生成的一串字符串,当用户第一次登陆成功后,服务器会生成一个token,并将其返回给客户端。 当用户再次向服务器请求数据时,只需要携带着token请求数据即可,无需再次登陆用户名和密码 目的 通过token做一层数据拦截,可以减少数据库请求次数,减缓服务器

    2024年02月02日
    浏览(35)
  • windows系统edge浏览器退出账户后还能免密登录的解决方式

    edge浏览器明明退出登录了,还能不用输密码一键点击就能登录; 这是因为微软的煞笔产品经理用脚后跟想出来的方案。 解决方案: 去设置里的账号管理,注销自己的微软账号登录; 如果你发现自己并没有登录,那么看下是否绑定了电子邮件,删除即可 最后再说一句,煞笔

    2024年02月09日
    浏览(96)
  • win10退出登录微软账号,亲测有效可以成功(解决没有改用本地账户;解决没有删除选项)

    1、windows+R   运行输入regedit 2. 打开注册表编辑器之后找到:HKEY_CURRENT_USERSoftwareMicrosoftIdentityCRLUserExtendedProperties***@**.com (这里***@**.com是你的账户名) 选中“***@**.com”文件删除; 3.找到: HKEY_USERS.DEFAULTSoftwareMicrosoftIdentityCRLStoredIdentities***@**.com (这里***@**.com是你的账户名

    2024年02月11日
    浏览(49)
  • RSA加密:Web前端登录账户密码加密传输

        一般在做系统时候对安全性要求比较高,现在通常选择https协议来进行数据传输。很多情况下一般的javaweb网站,如果安全要求不是很高的话,用https协议就可以了。在这种情况下,密码的明文传输显然是不合适的,因为请求如果在传输过程中被截了,就可以直接拿明文密

    2024年02月10日
    浏览(55)
  • Windows 11设置登录账户密码有效期或密码永不过期的方法

    目录 文章目录 序言 网上的方法(不管用) 本地组策略编辑器 自己的方法(亲测有效) 示例命令一:添加本地账户 示例命令二:查看本地账户默认过期时间 示例命令三(推荐):设置本地账户密码永不过期 示例命令四:设置系统策略中默认密码最长时间为无限制 示例命令

    2024年02月16日
    浏览(36)
  • 如何配置azure AD 通过登录azure的账户密码登录Azure VM

    Azure vm 添加 Azure AD 通过邮箱的账户密码登录 首先创建一个虚拟机,并且勾选Azure AD的复选框。 将创建虚机生成的资源最好配置到同一资源组 例如: 在vm生成的全部资源所在的资源组下打开访问控制

    2024年02月09日
    浏览(56)
  • 前端刷新token,判断token是否过期,若没有过期则刷新token,过期则退出登录

    vue+axios 假设后端设置的token过期时间为10分钟。那么登录以后,过十分钟后token就会过期,这时再去操作系统,所有的请求都不能用,都会报token过期,需要重新登录才能继续操作系统。这样的方式显然是不合理的,为了解决这个问题,就需要在一段时间内刷新token。 在请求拦

    2024年02月12日
    浏览(59)
  • 在Qt中通过控制按钮实现登录界面密码与明码的转换

    首先,在Qt设计师界面界面上创建QLineEdit类文本框,用于输入密码,并且实现密码与明码相互转化。 默认情况下,输入密码的文本框应该是可见的并允许用户输入。 在界面上添加一个按钮,用于触发切换操作。这个按钮可以是一个简单的开关按钮,比如一个复选框或者一个切

    2024年01月21日
    浏览(60)
  • debian12版本默认SSH不让ROOT账户远程登录解决方案(重置密码)

    官方链接 D.3.7. 远程访问:安装 SSH 并设置密码 如果您可以通过控制台登录系统,可以跳过此节。如果以后可以通过网络访问系统,则需要安装 SSH 并设置访问权限。 默认禁用 root 登录密码,因此可以通过 设置密码(重置密码) 来设置访问权限,并用密码重新启用 root 登录

    2024年02月06日
    浏览(63)
  • Docker安装ElasticSearch、Kibana、IK分词器以及设置ES账户密码

    版本声明: 系统 :CentOS 7.9(云服务器) ES版本 :7.6.1 Kibana :7.6.1 Ik分析器版本 :7.6.1 1、拉取镜像 2、创建挂载目录 设置所有用户读写执行权限 : sudo chmod -R 777 /docker_config/elasticsearch/ 3、创建elasticsearch.yml 配置文件 4、创建容器 参数说明 : -p 端口映射 -e discovery.type=single

    2023年04月09日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包