QtDAY 2

代码:

头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QString>
#include <QTextToSpeech>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

    // 自定义的槽函数
    // 信号与槽::槽函数的声明
    void on_btn_login_clicked();
    void on_btn_cancel_clicked();

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

private:
    Ui::Widget *ui;
    QTextToSpeech *speech;
};


void show_dialog_err(Widget *);
void show_dialog_correct(Widget *);
void show_dialog_ques(Widget *);
#endif // WIDGET_H

源文件:

#include "widget.h"
#include "ui_widget.h"

#include <QIcon>
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 窗体
    setWindowIcon(QIcon("D:/壁纸/TEMP/蓝.jpg"));
    setWindowTitle("QQ");

    setFixedSize(QSize(300,400));
    // 组件位置
    ui->l_logo->move(0,0);
    ui->l_logo->resize(300,200);

    ui->l_account->move(30,220);
    ui->l_account->resize(20,20);

    ui->l_passwd->move(30,220+ui->l_account->height()+10);
    ui->l_passwd->resize(20,20);

    ui->le_account->move(60,220);
    ui->le_account->resize(200,20);

    ui->le_passwd->move(60,220+ui->le_account->height()+10);
    ui->le_passwd->resize(200, 20);

    // 组件属性
    ui->l_logo->setPixmap(QPixmap(":/logo.png"));
    ui->l_logo->setScaledContents(true);

    ui->l_account->setPixmap(QPixmap(":/userName.jpg"));
    ui->l_account->setScaledContents(true);
    ui->l_passwd->setPixmap(QPixmap(":/passwd.jpg"));
    ui->l_passwd->setScaledContents(true);

    ui->le_account->setPlaceholderText("请输入账户:");
    ui->le_passwd->setPlaceholderText("请输入密码:");
    ui->le_passwd->setEchoMode(QLineEdit::Password);
//    ui->le_passwd->setFont(QFont())

    ui->btn_login->setIcon(QIcon(":/login.png"));
    ui->btn_cancel->setIcon(QIcon(":/cancel.png"));

    // 播报类
    speech = new QTextToSpeech(this);// 实例化播报员

    // 信号与槽4版本->5版本
    // 连接登录按钮的clicked信号,到槽函数
    connect(ui->btn_login, &QPushButton::clicked, this, &Widget::on_btn_login_clicked, Qt::AutoConnection);
    // 连接取消按钮的clicked信号,到槽函数
    connect(ui->btn_cancel, &QPushButton::clicked, this, &Widget::on_btn_cancel_clicked);

    // 信号与槽c11版本
    connect(ui->btn_login, &QPushButton::clicked, [&](){
        if(ui->le_passwd->text() == "")
        {
            qDebug() << "密码为空";
        }
        if(ui->le_account->text() == "")
        {
            qDebug() << "用户名为空";
        }
    });
}

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

// 信号与槽::槽函数的定义
// 登录按钮对应的槽函数
void Widget::on_btn_login_clicked()
{
    // 播报员
    speech->say("您的用户名是");
    speech->say(ui->le_account->text());

    qDebug() << "用户点击登录按钮";
    if(ui->le_account->text() == "admin")
    {
        // qDebug() << "用户名正确";
        if(ui->le_passwd->text() == "123456")
        {
             qDebug() << "登录成功";
             // 显示登录成功对话框
             show_dialog_correct(this);
        }
        else
        {
             qDebug() << "密码错误";
             ui->le_passwd->setText("");
             // 显示错误对话框
             show_dialog_err(this);
        }
    }
    else
    {
        qDebug() << "用户名错误";
    }
}
// 取消按钮对应的槽函数
void Widget::on_btn_cancel_clicked()
{

    qDebug() << "用户点击取消按钮";
    show_dialog_ques(this);
}


// 显示错误对话框
void show_dialog_err(Widget *obj)
{
    QMessageBox err_msg(QMessageBox::NoIcon,
                        "错误",
                        "账号密码不匹配,是否重新登录",
                        QMessageBox::Ok|QMessageBox::Cancel,
                        obj);
    int ret = err_msg.exec();
    if(ret == QMessageBox::Ok)
    {
        err_msg.close();
    }
    else if(ret == QMessageBox::Cancel)
    {
        err_msg.close();
        obj->close();
    }

    return ;
}
// 显示成功对话框
void show_dialog_correct(Widget *obj)
{
    QMessageBox correct_msg(QMessageBox::NoIcon,
                            "成功",
                            "登录成功",
                            QMessageBox::Ok,
                            obj);
    int ret = correct_msg.exec();
    if(ret == QMessageBox::Ok)
    {
        correct_msg.close();
        obj->close();
    }
    return ;
}
// 显示退出对话框
void show_dialog_ques(Widget *obj)
{
    QMessageBox cancel_msg(QMessageBox::NoIcon,
                            "退出",
                            "是否确定退出登录",
                            QMessageBox::Ok|QMessageBox::Cancel,
                            obj);
    int ret = cancel_msg.exec();
    if(ret == QMessageBox::Ok)
    {
        cancel_msg.close();
        obj->close();
    }
    else if(ret == QMessageBox::Cancel)
    {
        cancel_msg.close();
    }
    return ;
}

 

 

知识整理:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值