Day3 Qt

作业

1.

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

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

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

要求:基于属性版和基于静态成员函数版至少各用一个

要求:尽量每行代码都有注释

//my_widget.cpp

#include "my_widget.h"
#include "ui_my_widget.h"

My_Widget::My_Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::My_Widget)
{
    ui->setupUi(this);
    //窗口的相关设置
    //    this -> resize(800,500);
    this -> setWindowTitle("QQ聊天"); //设置窗口标题
    this -> setWindowIcon(QIcon(":/pictrue/pictrue/qq.png"));//设置窗口图标

    //标签相关设置
    ui-> logoLab ->setPixmap(QPixmap(":/pictrue/pictrue/logo.png"));//设置登录界面主图
    ui -> logoLab -> setScaledContents(true);//主图自适应标签大小

    //账号和密码
    ui -> userNameLab -> resize(40,40);//设置账户标签图标大小
    ui -> userNameLab -> setPixmap(QPixmap(":/pictrue/pictrue/wodepeizhenshi.png"));//设置账户标签图标
    ui -> userNameLab -> setScaledContents(true);//设置账户标签图标自适应标签大小

    ui -> passwdLab -> resize(40,40);//设置密码标签大小
    ui -> passwdLab ->setPixmap(QPixmap(":/pictrue/pictrue/passwd.jpg"));//设置密码标签图标
    ui -> passwdLab ->setScaledContents(true);//设置密码标签图标自适应标签大小

    //账号密码输入
    ui -> usrEdit ->setPlaceholderText("QQ账号/手机号码/QQ邮箱");//在账户输入行编译器上设置隐性输入提示
    ui -> passwdEdit -> setPlaceholderText("请输入密码");//在密码输入行编译器上设置隐性输入提示
    ui -> passwdEdit -> setEchoMode(QLineEdit::Password);//将密码行编译器设置为不可见属性防止密码泄露

    //登录按钮
    ui -> btn1 ->setIcon(QIcon(":/pictrue/pictrue/login.png"));//登录按钮设置添加图片
    ui -> btn2 ->setIcon(QIcon(":/pictrue/pictrue/cancel.png"));//取消登录按钮设置添加图片

    connect(ui ->btn1,&QPushButton::clicked,this,&My_Widget::btn1_slot);//信号触发函数,按下登录按钮,当登录成功则响应相应槽函数,判断账号是否输入正确

    //   connect(ui->btn2,SIGNAL(clicked()),this,SLOT(my_slot()));




}

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

void My_Widget::my_slot() //QT4版本 槽函数
{
    this ->close();//当前界面关闭
}
void My_Widget:: btn1_slot() //qt5版本信号与槽函数连接,自定义
{
    QString s = ui ->usrEdit->text();//存入输入的数据
    QString v = ui ->passwdEdit->text();//存入输入的数据

    //判断账号密码输入正确
    if(s=="admin"&&v=="123456")
    {
        qDebug() << "登录成功";//终端输出登录成功
        //跳转另一个窗口
        int res=QMessageBox::information(this,"登录成功",                  //调用静态消息对话框
                                             "密码正确,请进入聊天界面",      //参数内容书写
                                             QMessageBox::Ok);            //参数判断是否ok 返回ok
            if(res==QMessageBox::Ok) //判断选择按下按钮ok
            {
              emit Jump(); //则进行跳转界面,先发送跳转信号,通过跳转信号链接第二窗口的show函数
            }
        this->close();//跳转是将当前登录界面关闭
    }
    else
    {
        //============基于属性版本==============
//        QMessageBox msg(                                //调用属性消息对话框
//                    QMessageBox::Critical,                //输出提示错误信息
//                    "错误",
//                    "账号和密码不匹配,是否重新登录",
//                    QMessageBox::Yes | QMessageBox::No);  //判断按下确认还是否定
//        int ret=msg.exec();  属性消息设置成功编译执行弹出后返回一个确认键值
//        if(ret==QMessageBox::Yes) //判断是否按下确认键
//        {
//            ui ->usrEdit->clear();  //按下yes则清空账户行编译器内容重新输入账号
//            ui->passwdEdit -> clear();//按下yes则清空密码行编译器内容重新输入密码
//            qDebug()<<"请重新登录"; //终端输出重新登入
//        }
//        else  //若按下No键,则进行退出登录
//        {
//           this->close();//退出当前登录界面
//        }
//    }
     //============基于属性版本==============
    //============基于静态成员函数版本==============
   int res=QMessageBox::critical(this,"输入错误",                          //调用静态成员函数错误输出信息框
                                    "账号和密码不匹配,是否重新登录",          // 函数内部具体实参
                                    QMessageBox::Yes | QMessageBox::No);     //写入消息框按键有哪几个
   if(res==QMessageBox::Yes)  //如果返回值按下的是YES
   {
       ui ->usrEdit->clear();  //清空账号信息
       ui->passwdEdit -> clear(); //清空密码信息
   }
   else
   {
       this->close(); //否则按下NO,关闭当前登录界面
   }
    //============基于静态成员函数版本==============
}

}
void My_Widget::on_btn2_clicked()  //取消键被按下,执行弹出消息框
{
     //============基于属性版本==============
//    QMessageBox msg1(
//                QMessageBox::Information,
//                "取消登录",
//                "请问您是否需要取消登录",
//                QMessageBox::Yes | QMessageBox::No);
//    int ret=msg1.exec();
//    if(ret==QMessageBox::Yes)
//    {
//        this->close();
//    }
//    else
//    {
//        ui ->usrEdit->clear();
//        ui->passwdEdit -> clear();
//        qDebug()<<"请重新登录";
//    }
     //============基于属性版本==============

     //============基于静态成员函数版本==============
    int res=QMessageBox::information(this,"取消登录",
                                     "请问您是否需要取消登录",
                                     QMessageBox::Yes | QMessageBox::No);
    if(res==QMessageBox::Yes)  //若按下YES,则取消登录关闭登录页
    {
        this->close();
    }
    else //按下NO,则不取消登录
    {
        ui ->usrEdit->clear();
        ui->passwdEdit -> clear(); //清空输入端,终端输入提示信息请重新登录
        qDebug()<<"请重新登录";
    }
     //============基于静态成员函数版本==============

}
//my_widget.h

#ifndef MY_WIDGET_H
#define MY_WIDGET_H
#include 
#include 
#include 
#include 
#include
#include 
#include
QT_BEGIN_NAMESPACE
namespace Ui { class My_Widget; }
QT_END_NAMESPACE

class My_Widget : public QWidget
{
    Q_OBJECT

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

public slots:
    void btn1_slot();
void my_slot();

signals:
 void Jump();

private slots:
void on_btn2_clicked();

private:
    Ui::My_Widget *ui;
};
#endif // MY_WIDGET_H
//main.cpp
#include "my_widget.h"
#include "second.h"
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    My_Widget w;
    w.show();
    Second s;
   QObject ::connect(&w,&My_Widget::Jump,&s,&Second::Jump_slot);//调用caonnect函数,第一个登录窗口成功后进入新的对话框
    return a.exec();
}

Day3 Qt_第1张图片Day3 Qt_第2张图片Day3 Qt_第3张图片Day3 Qt_第4张图片

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