QT day3作业

1.思维导图

QT day3作业_第1张图片

 

2、

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
要求:基于属性版和基于静态成员函数版至少各用一个

头文件:

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include //动图类
#include //按钮类
#include //文本转语音类
#include //对话框类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT//宏,信号与槽

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void my_jump();//第一个界面的信号

private:
    Ui::Widget *ui;
    QTextToSpeech *speecher;//定义一个语音播报着

public slots: //表示该权限下是私有槽函数(一般由系统提供)
    void my_slot();
    void my_slot1();

};
#endif // WIDGET_H

 sec.h

#ifndef SEC_H
#define SEC_H

#include 
#include 
namespace Ui {
class sec;
}

class sec : public QWidget
{
    Q_OBJECT

public:
    explicit sec(QWidget *parent = nullptr);
    ~sec();

private:
    Ui::sec *ui;
public slots:
    void my_jump_slot();//第二个界面的槽函数
};

#endif // SEC_H

 

主函数:

main.cpp 

#include "widget.h"
#include "sec.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;//实例化第一个窗口
    w.show();

    sec s; //实例化第二个窗口

    //将第一个窗口和第二个窗口连接
    QObject::connect(&w,&Widget::my_jump,&s,&sec::my_jump_slot);
    return a.exec();
}

功能函数:

 widget.cpp

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    speecher =new QTextToSpeech(this);//给语音播报者实例化空间
    
    
    //***********************窗口类*******************************//
    this->setWindowFlags(Qt::FramelessWindowHint);
   
    
    //***********************标签类*******************************//
    QMovie *mv=new QMovie(":/new/prefix1/22/1.gif");//设置动图
    ui->logoLab->setMovie(mv);//将动图放到logo标签上
    mv->start();//让动图开始
    ui->logoLab->setScaledContents(true);//设置动图自适应
    //设置头像样式
    ui->labh->setStyleSheet("border-radius:30px");


    //手动连接信号和系统的槽函数  基于qt4版的连接  该连接是不友好的连接
    connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(my_slot()));
    //手动连接信号和自定义槽函数  基于qt5版的连接  该连接是友好的连接
    connect(ui->loginButton,&QPushButton::clicked,this,&Widget::my_slot1);
}



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

void Widget::my_slot() //取消按钮自定义的函数处理
{        //基于静态成员函数版本实现
    int ret=QMessageBox::question(this,//父组件
                                  "问题",//标题
                                  "您是否确定要退出登录?",//文本
                                  QMessageBox::Yes|QMessageBox::No);//提供的按钮
    if(ret==QMessageBox::Yes)//对用户选中的按钮,执行不同的功能
    {
            this->close();//关闭当前的界面
    }

}

void Widget::my_slot1()//登录按钮自定义的函数处理
{
    if(ui->lineEdit->text()=="admin" && ui->lineEdit_2->text()=="123456")//判断登录的账号和密码是否正确
    {
        ui->msgLab->setText("登陆成功!");//修改状态信息标签
        speecher->say("登录成功");//语音播报
        QMessageBox box(QMessageBox::Information, //基于属性版本
                        "提示",                  //标题
                        "登陆成功",                //文本
                        QMessageBox::Ok,          //提供按钮
                        this);                         //父对象
        int  ret=box.exec();          //使用exec()弹出对话框
        if(ret==QMessageBox::Ok)  //根据用户选中的按钮 执行不同的功能
        {
            emit this->my_jump();//触发一个界面的信号
            this->close(); //关闭当前的界面
        }

    }else
    {
          speecher->say("登录失败");//语音播报
        int res=QMessageBox::critical(this,     //父组件 //基于静态成员函数版本实现
                                      "错误",  //标题
                                      "账号和密码不匹配,是否重新登录?",//文本
                                      QMessageBox::Yes|QMessageBox::No);//提供的按钮
        ui->msgLab->setText("登陆失败!");//修改状态信息标签

        if(res==QMessageBox::Yes)   //对用户选中的按钮,执行不同的功能
        {
            ui->lineEdit_2->setText("");//将密码行编辑器内容清空
        }else
        {
            this->close();//关闭当前的界面
        }

    }

}


 sec.cpp

#include "sec.h"
#include "ui_sec.h"

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


}

sec::~sec()
{
    delete ui;
}
//槽函数的实现
void sec::my_jump_slot()
{
    this->show();
}

 实际效果:

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

 

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

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

代码主要功能截图:

 

QT day3作业_第2张图片

你可能感兴趣的:(qt,开发语言)