头文件
#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();
}
}