Qt开发登录/退出功能

简要说明

本文主要介绍登录/退出的基本思路以及简单的代码实现,不涉及数据库相关操作

1.基本思路

使用Qt信号与槽的方式实现,
点击login界面下的登录按钮,发送try_login()信号,触发mainwindow界面show函数,同时退出当前界面;
点击mainwindow下的退出按钮,触发login界面的show_login()函数,重置输入框内容,同时退出当前界面;
在主函数中实现信号与槽的关联。

/*
 * 信号与槽函数的连接:connect
 * 参数一:信号发出者
 * 参数二:发出的信号
 * 参数三:信号接收者
 * 参数四:响应的槽函数
*/
    //点击登录对话框的登录按钮,进入主界面
    QObject::connect(&l,SIGNAL(try_login()),&w,SLOT(show()));
    //点击主界面的注销,返回登录对话框
    QObject::connect(&w,SIGNAL(try_exit()),&l,SLOT(show_login()));

2.新建Qt工程

为了实现登录/退出功能,我们需要两个界面,其中一个界面用来验证用户身份,实现登录功能;另外一个界面用来展示登录成功之后的界面,实现退出功能;界面布局如下图所示

左边为登录界面,右边为登录成功后界面

3.信号与槽的说明

login(登录界面):                                                                    mainwindow(Welcome界面):
     信号:try_login()                                                                     信号:try_exit()
     槽函数:show_login()                                                           槽函数:show()

在这里插入图片描述

4.函数实现

main函数
创建应用程序,创建窗口,显示窗口,关联登录界面与Welcome界面的信号与槽,并运行应用程序,开始应用程序的消息循环和事件处理

#include "mainwindow.h"
#include "login.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    login l;
    l.show();

    //点击登录对话框的登录按钮,进入主界面
    QObject::connect(&l,SIGNAL(try_login()),&w,SLOT(show()));
    //点击主界面的退出按钮,返回登录对话框
    QObject::connect(&w,SIGNAL(try_exit()),&l,SLOT(show_login()));


    return a.exec();
}

login头文件
声明槽函数show_login(), 按钮点击事件login_clicked(),信号try_login()

#ifndef LOGIN_H
#define LOGIN_H

#include <QMainWindow>

namespace Ui {
class login;
}

class login : public QMainWindow
{
    Q_OBJECT

public:
    explicit login(QWidget *parent = 0);
    ~login();

signals:
    void try_login();										//自定义信号try_login

private:
    Ui::login *ui;

private slots:
    void show_login();								//接收到try_exit()信号后执行的槽函数
    void login_clicked();							//按钮点击事件,在实现中发送try_login()信号
};

#endif // LOGIN_H

login.cpp
建立信号与槽函数的连接,实现槽函数:login_clicked()与show_login()

#include "login.h"
#include "ui_login.h"
#include <QMessageBox>

login::login(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::login)
{
    ui->setupUi(this);

    //信号与槽的连接,登录按钮按下时,执行登录操作
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(login_clicked()));
}

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

void login::login_clicked()
{

    //处理登录逻辑
    QString account = ui->lineEdit->text();										//获取用户名文本框的内容
    QString password = ui->lineEdit_2->text();								//获取密码文本框的内容
    //密码为空,说明没有该用户
    if(account != "admin"){
        QMessageBox::warning(this,"登录失败","用户名不存在,请检查");
        ui->lineEdit->clear();
        ui->lineEdit_2->clear();
        ui->lineEdit->setFocus();
    }

    //用户存在,但是密码不正确
    else if(QString::compare(password,"admin",Qt::CaseSensitive))
    {
        QMessageBox::warning(this,"登录失败","密码错误,请检查");
        ui->lineEdit->clear();
        ui->lineEdit_2->clear();
        ui->lineEdit_2->setFocus();
    }

    //用户密码均输入正确
    else{
    this->close();       																				 //退出当前界面
    emit(try_login());    																		//发送try_login()信号
    }
}

void login::show_login()																 //接收到try_exit()信号后执行的响应函数
{
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
    this->show();
}

mainwin头文件
声明槽函数login_clicked(),信号try_login(),相应try_exit()的槽函数使用Qt库实现的show()函数,这里不再单独定义

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow(); 

signals:
    void try_exit();																	//自定义信号 try_exit()

private:
    Ui::MainWindow *ui;

private slots:
    void exit_clicked();															//按钮点击事件exit_clicked(),在实现中发送try_exit()信号
};

#endif // MAINWINDOW_H

mainwindow.cpp
建立信号与槽函数的连接,实现槽函数:exit_clicked()

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //信号与槽的连接,退出按钮按下时,执行退出操作
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(exit_clicked()));

}

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

void MainWindow::exit_clicked()
{
    this->close();														//退出当前界面
    emit(try_exit());												//发送try_exit信号
}

源代码连接:
https://download.csdn.net/download/Jasonseven7/18138859

5. 参考博客:

https://blog.csdn.net/weixin_45138590/article/details/109254766

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的图形用户界面应用程序开发框架,支持多种操作系统和开发语言。Qt for Android是一个移植到Android平台的Qt版本,开发者可以使用Qt for Android进行Android应用程序的开发。下面将介绍一个Qt for Android的开发实例。 一个简单的Qt for Android应用程序是一个文本编辑器,能够打开、编辑和保存文本文件。该应用程序利用Qt的GUI组件和文件IO功能,实现了文本编辑器的基本功能。 该应用程序的主界面包含一个文本编辑区和一个菜单栏。菜单栏提供打开、保存和退出功能。当用户点击打开菜单项时,应用程序会弹出一个文件选择器,用户可以选择要打开的文本文件。当用户选择保存菜单项时,应用程序将当前编辑的内容保存到文件中。当用户选择退出菜单项时,应用程序会退出。 该应用程序的核心代码是文本编辑区的实现。使用Qt的TextEdit组件,可以创建一个可编辑的文本区域,并且可以获取和设置文本内容。在实现打开和保存功能时,需要使用Qt的文件IO功能,可以通过QFile类读取和写入文件内容。 在编译该应用程序时,需要安装Qt for Android的开发环境和Android SDK。将Qt for Android项目打包成APK文件,即可在Android设备上安装和运行。 总之,Qt for Android提供了一种跨平台的开发方式,可以大大提高应用程序开发的效率和可移植性。该开发实例展示了Qt for Android的基本应用,为开发者提供了参考和借鉴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值