QTday2和day3

头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>//窗口类
#include <QPushButton>//按钮类
#include <QLabel>//标签类
#include <QLineEdit>//行编辑器类
#include <QMovie>//动态图类
#include <QPixmap>//静态图类
#include <QIcon>//图标类
#include <QFont>//字体类
#include <QtTextToSpeech/QTextToSpeech>//文本转语音类
#include <chrono>
#include <thread>
#include <QMessageBox>//消息对话框类
#include <QFontDialog>//字体对话框类

class MyWidget : public QWidget
{
    Q_OBJECT
    QLabel* lab1;
    QLabel* lab2;
    QLabel* lab3;
    QLineEdit* le1;
    QLineEdit* le2;
    QPushButton* btn1;
    QPushButton* btn2;
public:
    MyWidget(QWidget *parent = nullptr);
    ~MyWidget();
signals:
    void jump();

public slots:
    void btn1_clicked();//按钮1点击槽函数
    void btn1_colorchanged();//按钮1颜色改变槽函数
    void btn2_clicked();//按钮2点击槽函数

};
#endif // MYWIDGET_H
#ifndef SECOND_H
#define SECOND_H

#include <QWidget>//窗口类
#include <QPushButton>//按钮类
#include <QLabel>//标签类
#include <QLineEdit>//行编辑器类
#include <QMovie>//动态图类
#include <QPixmap>//静态图类
#include <QIcon>//图标类
#include <QFont>//字体类
#include <QtTextToSpeech/QTextToSpeech>//文本转语音类
#include <QColor>//颜色类
#include <QFile>//IO类
#include <chrono>
#include <thread>
#include <QMessageBox>//消息对话框类
#include <QFontDialog>//字体对话框类
#include <QColorDialog>//颜色对话框
#include <QFileDialog>//文件对话框
#include <QTextEdit>//文本编辑器类

namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT
    QPushButton* btn1;
    QPushButton* btn2;
    QPushButton* btn3;
    QPushButton* btn4;
    QTextEdit* te;
public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();

public slots:
    void jump_slot();
    void btn1_clicked();//按钮1点击槽函数
    void btn2_clicked();//按钮2点击槽函数
    void btn3_clicked();//按钮3点击槽函数
    void btn4_clicked();//按钮4点击槽函数

private:
    Ui::Second *ui;
};

#endif // SECOND_H

源文件

#include "mywidget.h"
#include "second.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyWidget w;
    w.show();
    Second s;
    QObject::connect(&w,&MyWidget::jump,&s,&Second::jump_slot);
    return a.exec();
}
#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /*------------窗口类的相关设置------------*/
    //1.设置窗口大小
    this->resize(540,415);      /*<---->this->setGeometry(0,0,540,415);*/

    //2.固定窗口大小
    this->setFixedSize(540,415);/*<----> this->setMaximumSize(540,415);
                                         this->setMinimumSize(540,415);*/
    //3.设置窗口名称大小及字体
    this->setWindowTitle("仿QQ");
    QFont font;//实例化类对象
    font.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font.setPointSize(10);//设置字体大小为10
    font.setBold(false);//字体是否加粗
    this->setFont(font);

    //4.设置窗口图标
    this->setWindowIcon(QIcon(":/pictrue/qq.png"));

    //5.设置纯净窗口
    this->setWindowFlag(Qt::FramelessWindowHint);

    //6.设置窗口背景颜色
    this->setStyleSheet("background-color:white");



    /*------------标签类的相关设置------------*/
    /*-------------设置动图标签--------------*/
    //1.初始化标签类指针
    this->lab1=new QLabel(this);

    //2.设置标签大小
    lab1->resize(540,160);      /*<---->lab1->setGeometry(0,0,540,160);*/

    //3.固定标签大小
    lab1->setFixedSize(540,160);/*<----> lab1->setMaximumSize(540,160);
                                         lab1->setMinimumSize(540,160);*/
    //4.向标签中放入动图
    QMovie* mv=new QMovie(":/pictrue/background.png");
    lab1->setMovie(mv);
    mv->start();

    //5.让动图适应标签大小
    lab1->setScaledContents(true);

    /*-------------设置靜图标签--------------*/
    //1.初始化标签类指针
    this->lab2=new QLabel(this);
    this->lab3=new QLabel(this);

    //2.设置标签大小
    lab2->resize(30,30);
    lab3->resize(30,30);

    //3.固定标签大小
    lab2->setFixedSize(30,30);
    lab3->setFixedSize(30,30);

    //4.将标签移动到窗口指定位置
    lab2->move(120,210);
    lab3->move(120,260);

    //5.向标签中放入靜图
    lab2->setPixmap(QPixmap(":/pictrue/wodepeizhenshi.png"));
    lab3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));

    //6.让靜图适应标签大小
    lab2->setScaledContents(true);
    lab3->setScaledContents(true);



    /*------------行编辑器类的相关设置------------*/
    //1.初始化行编辑器类指针
    this->le1=new QLineEdit(this);
    this->le2=new QLineEdit(this);

    //2.设置行编辑器的大小
    le1->resize(275,30);
    le2->resize(275,30);

    //3.固定行编辑器大小
    le1->setFixedSize(275,30);
    le2->setFixedSize(275,30);

    //4.将行编辑器移动到指定位置
    le1->move(155,210);
    le2->move(155,260);

    //5.设置行编辑器的提示信息
    le1->setPlaceholderText("QQ号/手机号/邮箱");
    le2->setPlaceholderText("密码");
    le2->setEchoMode(QLineEdit::Password);

    //6.设置字体
    QFont font1,font2;
    font1.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font1.setPointSize(12);
    font1.setBold(true);
    font2.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font2.setPointSize(12);
    font2.setBold(true);
    le1->setFont(font1);
    le2->setFont(font2);


    /*------------按钮类的相关设置------------*/
    //1.初始化按钮类指针
    this->btn1=new QPushButton("登录",this);
    this->btn2=new QPushButton("×",this);

    //2.设置按钮的大小
    btn1->resize(310,45);
    btn2->resize(20,20);

    //3.固定按钮的大小
    btn1->setFixedSize(310,45);
    btn2->setFixedSize(20,20);

    //4.将按钮移动到窗口指定位置
    btn1->move(120,345);
    btn2->move(520,0);

    //5.设置字体
    QFont font3,font4;
    font3.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font3.setPointSize(15);
    font3.setBold(true);
    font4.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font4.setPointSize(14);
    font4.setBold(false);
    btn1->setFont(font3);
    btn2->setFont(font4);

    //6.设置按钮背景色
    btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(255,255,255);border-radius:6px");
    btn2->setStyleSheet("background-color:rgb(0,0,0,0);color:white");//rgb第四个参数表示透明度  0  完全透明   1  完全不透明

    /*------------按钮的信号与槽相关设置------------*/
    QObject::connect(le1,&QLineEdit::textChanged,this,&MyWidget::btn1_colorchanged);
    QObject::connect(le2,&QLineEdit::textChanged,this,&MyWidget::btn1_colorchanged);
    QObject::connect(btn1,&QPushButton::clicked,this,&MyWidget::btn1_clicked);
    QObject::connect(btn2,&QPushButton::clicked,this,&MyWidget::btn2_clicked);




}

MyWidget::~MyWidget()
{
}

//按钮1点击槽函数
void MyWidget::btn1_clicked()
{
    QTextToSpeech* speaker=new QTextToSpeech;
    if(this->le1->text()=="Admain"&&this->le2->text()=="123456789")
    {
        speaker->say("登录成功");
        QMessageBox box1(QMessageBox::Information,"信息对话框","tips:Login successfully",QMessageBox::Ok,nullptr);
        box1.setDefaultButton(QMessageBox::Ok);
        int res1=box1.exec();
        if(res1==QMessageBox::Ok)
        {
//        std::this_thread::sleep_for(std::chrono::seconds(2));//睡眠操作
            emit MyWidget::jump();
            MyWidget::close();
        }
    }
    else
    {
        QMessageBox box2;
        box2.setIcon(QMessageBox::Critical);
        box2.setWindowTitle("错误对话框");
        box2.setText("Login failed Please log in again");
        box2.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
        box2.setDefaultButton(QMessageBox::Yes);
        int res2=box2.exec();
        if(res2==QMessageBox::Yes)
        {
            speaker->say("登录失败,请重新输入");
            this->le1->clear();
            this->le2->clear();
        }
        else if(res2==QMessageBox::No)
        {
            QWidget::close();
        }
    }
}

//按钮1颜色改变槽函数
void MyWidget::btn1_colorchanged()
{
    if(this->le1->text().length()<6||this->le2->text().length()<6)
    {
        this->btn1->setEnabled(false);
        btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(96,96,96);border-radius:6px");
    }
    else
    {
        this->btn1->setEnabled(true);
        btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(255,255,255);border-radius:6px");
    }
}

//按钮2点击槽函数
void MyWidget::btn2_clicked()
{
//    QMessageBox box(QMessageBox::Warning,"关闭对话框","Do you really close it?",QMessageBox::Yes|QMessageBox::No,nullptr);
//    box.setDefaultButton(QMessageBox::Yes);
//    int res=box.exec();
    int res=QMessageBox::warning(nullptr,"关闭对话框","Do you really close it?",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
    if(res==QMessageBox::Yes)
    {
        QWidget::close();
    }
}
#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /*------------窗口类的相关设置------------*/
    //1.设置窗口大小
    this->resize(540,415);      /*<---->this->setGeometry(0,0,540,415);*/

    //2.固定窗口大小
    this->setFixedSize(540,415);/*<----> this->setMaximumSize(540,415);
                                         this->setMinimumSize(540,415);*/
    //3.设置窗口名称大小及字体
    this->setWindowTitle("仿QQ");
    QFont font;//实例化类对象
    font.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font.setPointSize(10);//设置字体大小为10
    font.setBold(false);//字体是否加粗
    this->setFont(font);

    //4.设置窗口图标
    this->setWindowIcon(QIcon(":/pictrue/qq.png"));

    //5.设置纯净窗口
    this->setWindowFlag(Qt::FramelessWindowHint);

    //6.设置窗口背景颜色
    this->setStyleSheet("background-color:white");



    /*------------标签类的相关设置------------*/
    /*-------------设置动图标签--------------*/
    //1.初始化标签类指针
    this->lab1=new QLabel(this);

    //2.设置标签大小
    lab1->resize(540,160);      /*<---->lab1->setGeometry(0,0,540,160);*/

    //3.固定标签大小
    lab1->setFixedSize(540,160);/*<----> lab1->setMaximumSize(540,160);
                                         lab1->setMinimumSize(540,160);*/
    //4.向标签中放入动图
    QMovie* mv=new QMovie(":/pictrue/background.png");
    lab1->setMovie(mv);
    mv->start();

    //5.让动图适应标签大小
    lab1->setScaledContents(true);

    /*-------------设置靜图标签--------------*/
    //1.初始化标签类指针
    this->lab2=new QLabel(this);
    this->lab3=new QLabel(this);

    //2.设置标签大小
    lab2->resize(30,30);
    lab3->resize(30,30);

    //3.固定标签大小
    lab2->setFixedSize(30,30);
    lab3->setFixedSize(30,30);

    //4.将标签移动到窗口指定位置
    lab2->move(120,210);
    lab3->move(120,260);

    //5.向标签中放入靜图
    lab2->setPixmap(QPixmap(":/pictrue/wodepeizhenshi.png"));
    lab3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));

    //6.让靜图适应标签大小
    lab2->setScaledContents(true);
    lab3->setScaledContents(true);



    /*------------行编辑器类的相关设置------------*/
    //1.初始化行编辑器类指针
    this->le1=new QLineEdit(this);
    this->le2=new QLineEdit(this);

    //2.设置行编辑器的大小
    le1->resize(275,30);
    le2->resize(275,30);

    //3.固定行编辑器大小
    le1->setFixedSize(275,30);
    le2->setFixedSize(275,30);

    //4.将行编辑器移动到指定位置
    le1->move(155,210);
    le2->move(155,260);

    //5.设置行编辑器的提示信息
    le1->setPlaceholderText("QQ号/手机号/邮箱");
    le2->setPlaceholderText("密码");
    le2->setEchoMode(QLineEdit::Password);

    //6.设置字体
    QFont font1,font2;
    font1.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font1.setPointSize(12);
    font1.setBold(true);
    font2.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font2.setPointSize(12);
    font2.setBold(true);
    le1->setFont(font1);
    le2->setFont(font2);


    /*------------按钮类的相关设置------------*/
    //1.初始化按钮类指针
    this->btn1=new QPushButton("登录",this);
    this->btn2=new QPushButton("×",this);

    //2.设置按钮的大小
    btn1->resize(310,45);
    btn2->resize(20,20);

    //3.固定按钮的大小
    btn1->setFixedSize(310,45);
    btn2->setFixedSize(20,20);

    //4.将按钮移动到窗口指定位置
    btn1->move(120,345);
    btn2->move(520,0);

    //5.设置字体
    QFont font3,font4;
    font3.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font3.setPointSize(15);
    font3.setBold(true);
    font4.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));//设置字体为宋体
    font4.setPointSize(14);
    font4.setBold(false);
    btn1->setFont(font3);
    btn2->setFont(font4);

    //6.设置按钮背景色
    btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(255,255,255);border-radius:6px");
    btn2->setStyleSheet("background-color:rgb(0,0,0,0);color:white");//rgb第四个参数表示透明度  0  完全透明   1  完全不透明

    /*------------按钮的信号与槽相关设置------------*/
    QObject::connect(le1,&QLineEdit::textChanged,this,&MyWidget::btn1_colorchanged);
    QObject::connect(le2,&QLineEdit::textChanged,this,&MyWidget::btn1_colorchanged);
    QObject::connect(btn1,&QPushButton::clicked,this,&MyWidget::btn1_clicked);
    QObject::connect(btn2,&QPushButton::clicked,this,&MyWidget::btn2_clicked);




}

MyWidget::~MyWidget()
{
}

//按钮1点击槽函数
void MyWidget::btn1_clicked()
{
    QTextToSpeech* speaker=new QTextToSpeech;
    if(this->le1->text()=="Admain"&&this->le2->text()=="123456789")
    {
        speaker->say("登录成功");
        QMessageBox box1(QMessageBox::Information,"信息对话框","tips:Login successfully",QMessageBox::Ok,nullptr);
        box1.setDefaultButton(QMessageBox::Ok);
        int res1=box1.exec();
        if(res1==QMessageBox::Ok)
        {
//        std::this_thread::sleep_for(std::chrono::seconds(2));//睡眠操作
            emit MyWidget::jump();
            MyWidget::close();
        }
    }
    else
    {
        QMessageBox box2;
        box2.setIcon(QMessageBox::Critical);
        box2.setWindowTitle("错误对话框");
        box2.setText("Login failed Please log in again");
        box2.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
        box2.setDefaultButton(QMessageBox::Yes);
        int res2=box2.exec();
        if(res2==QMessageBox::Yes)
        {
            speaker->say("登录失败,请重新输入");
            this->le1->clear();
            this->le2->clear();
        }
        else if(res2==QMessageBox::No)
        {
            QWidget::close();
        }
    }
}

//按钮1颜色改变槽函数
void MyWidget::btn1_colorchanged()
{
    if(this->le1->text().length()<6||this->le2->text().length()<6)
    {
        this->btn1->setEnabled(false);
        btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(96,96,96);border-radius:6px");
    }
    else
    {
        this->btn1->setEnabled(true);
        btn1->setStyleSheet("background-color:rgb(8,189,253);color:rgb(255,255,255);border-radius:6px");
    }
}

//按钮2点击槽函数
void MyWidget::btn2_clicked()
{
//    QMessageBox box(QMessageBox::Warning,"关闭对话框","Do you really close it?",QMessageBox::Yes|QMessageBox::No,nullptr);
//    box.setDefaultButton(QMessageBox::Yes);
//    int res=box.exec();
    int res=QMessageBox::warning(nullptr,"关闭对话框","Do you really close it?",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
    if(res==QMessageBox::Yes)
    {
        QWidget::close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值