QT的学习

本文详细描述了如何在C++中创建一个具有验证功能的登录界面,包括账号密码验证、错误提示及用户操作响应。涉及到了QTextToSpeech、QMessageBox等库的使用以及信号槽机制的运用。
摘要由CSDN通过智能技术生成

代码练习

制作登录界面

如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

初始启动界面

头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTextToSpeech>
#include <QDebug>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void Log_in();
private slots:
    void on_pushButton2_clicked();

    void PushbuttonClicked();

private:
    Ui::Widget *ui;

    QTextToSpeech *speaker;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    ,speaker(new QTextToSpeech(this))
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);

    this->setAttribute(Qt::WA_TranslucentBackground);
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton2_clicked()));
    connect(ui->pushButton,&QPushButton::clicked,this,&Widget::PushbuttonClicked);
}

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


void Widget::on_pushButton2_clicked()
{
    int ret = QMessageBox::question(this, "提示", "你真的启不动吗?", QMessageBox::Yes | QMessageBox::No);


    //根据用户选中的按钮,执行不同的功能
    if(ret == QMessageBox::Yes)
    {
        this->close();
    }
    else
    {

    }
}

void Widget::PushbuttonClicked()
{
    speaker->say(ui->pushButton->text());
    this->close();
    emit Log_in();
}

登录界面

头文件
#ifndef LOGING_H
#define LOGING_H

#include <QWidget>
#include <QDebug>
#include <QMessageBox>
namespace Ui {
class Loging;
}

class Loging : public QWidget
{
    Q_OBJECT

public:
    explicit Loging(QWidget *parent = nullptr);
    ~Loging();
signals:
    void Loged1();

public slots:
    void Log_rec();
private slots:
    void on_pushButton_clicked();

private:
    Ui::Loging *ui;
};

#endif // LOGING_H
源文件
#include "loging.h"
#include "ui_loging.h"

Loging::Loging(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Loging)
{

    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);

    this->setAttribute(Qt::WA_TranslucentBackground);
    ui->lineEdit->setPlaceholderText("支持QQ号/邮箱/手机号登录");
    ui->lineEdit_2->setPlaceholderText("请输入密码");
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);

}

Loging::~Loging()
{
    delete ui;

}



void Loging::Log_rec()
{
    this->show();
}

void Loging::on_pushButton_clicked()
{
    if(QString(ui->lineEdit->text())=="admin")
    {
        if(QString(ui->lineEdit_2->text())=="123456")
        {
            QMessageBox msg(QMessageBox::Information, "提示", "登录成功", QMessageBox::Ok, this);
            int ret = msg.exec();
            if(ret == QMessageBox::Ok)
            {
                this->close();
                emit Loged1();
                qDebug() << "4 called";
            }
        }
        else
        {
            int ret = QMessageBox::question(this, "提示", "账号或密码错误,是否重新登录", QMessageBox::Yes | QMessageBox::No);


            //根据用户选中的按钮,执行不同的功能
            if(ret == QMessageBox::Yes)
            {
                ui->lineEdit_2->clear();
            }
            else
            {
                this->close();
            }
        }
    }
    else
    {
        int ret = QMessageBox::question(this, "提示", "账号或密码错误,是否重新登录", QMessageBox::Yes | QMessageBox::No);


        //根据用户选中的按钮,执行不同的功能
        if(ret == QMessageBox::Yes)
        {
            ui->lineEdit_2->clear();
        }
        else
        {
            this->close();
        }
    }
}

加载界面

头文件
#ifndef INFOR_H
#define INFOR_H

#include <QWidget>
#include <QDebug>
namespace Ui {
class infor;
}

class infor : public QWidget
{
    Q_OBJECT

public:
    explicit infor(QWidget *parent = nullptr);
    ~infor();
public slots:
    void Loged_rec1();

public slots:
    void push_close();
private:
    Ui::infor *ui;
};

#endif // INFOR_H
源文件
#include "infor.h"
#include "ui_infor.h"

infor::infor(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::infor)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);
    connect(ui->pushButton,&QPushButton::clicked,this,&infor::push_close);
}

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

void infor::Loged_rec1()
{
    qDebug() << "1 called";
    ui->label_2->setText("登陆成功!正在加载请稍后...");
    this->show();
}


void infor::push_close()
{
    qDebug() << "3 called";
    this->close();
}


效果演示

登录第三版

思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值