1> 重新将登录框实现完整
2> 将文本编辑器完整实现
1、
mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMovie>
#include <QDebug>
#include <QMessageBox>
class MyWidget : public QWidget
{
Q_OBJECT
signals:
void mysignal1(void);//声明一个信号函数
void mysignal2(void);
public slots:
void myslots1(void);//声明一个槽函数
void myslots2(void);//声明一个槽函数
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
QPushButton *btn1;
QLineEdit *edit1;
QLineEdit *edit2;
};
#endif // MYWIDGET_H
widget1.h
#ifndef WIDGET1_H
#define WIDGET1_H
#include <QWidget>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QMovie>
#include <QDebug>
namespace Ui {
class widget1;
}
class widget1 : public QWidget
{
Q_OBJECT
public slots:
void myslots1(void);
public:
explicit widget1(QWidget *parent = nullptr);
~widget1();
private:
Ui::widget1 *ui;
};
#endif // WIDGET1_H
main.c
#include "mywidget.h"
#include "widget1.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
widget1 s;
w.show();
QObject::connect(&w,&MyWidget::mysignal1,&s,&widget1::myslots1);
return a.exec();
}
mywidget.c
#include "mywidget.h"
void fun()
{
qDebug()<<"全局函数";
}
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
//设置标题
this->setWindowTitle("登录");
//设置图标
this->setWindowIcon(QIcon(":/new/prefix1/C:/Users/DC/Desktop/pictrue/qq.png"));
//设置背景颜色
this->setStyleSheet("background-color:rgb(255,255,255)");
//固定窗口大小
this->setFixedSize(540,400);
//去掉头部
//this->setWindowFlag(Qt::FramelessWindowHint);
QLabel *lab1=new QLabel("标签",this);
lab1->resize(540,400);
lab1->setStyleSheet("background-color:green");
QMovie *mv = new QMovie(":/new/prefix1/C:/Users/DC/Desktop/pictrue/zz.gif");
//将动图放入标签中
lab1->setMovie(mv);
//让动图动起来
mv->start();
//自动适应
lab1->setScaledContents(true);
QLabel *lab2=new QLabel("账号",this);
lab2->resize(40,40);
lab2->setPixmap(QPixmap(":/new/prefix1/C:/Users/DC/Desktop/pictrue/1.png"));
lab2->move(100,100);
lab2->setScaledContents(true);
QLabel *lab3=new QLabel("密码",this);
lab3->resize(40,40);
lab3->setPixmap(QPixmap(":/new/prefix1/C:/Users/DC/Desktop/pictrue/2.jpg"));
lab3->move(100,150);
lab3->setScaledContents(true);
edit1=new QLineEdit;
edit1->setPlaceholderText("QQ号/手机号");
edit1->setParent(this);
edit1->resize(260,40);
edit1->move(150,100);
edit2=new QLineEdit("密码",this);
edit2->setEchoMode(QLineEdit::Password);
edit2->resize(260,40);
edit2->move(150,150);
btn1=new QPushButton("登录",this);
btn1->resize(120,50);
btn1->move(210,200);
//btn1->setEnabled(false);
//样式函数setStyleSheet()
btn1->setStyleSheet("background-color:rgb(8,189,253);border-radius:5px;color:white");
connect(this->btn1,&QPushButton::clicked,this,&MyWidget::myslots1);
connect(this,&MyWidget::mysignal2,this,&MyWidget::myslots2);
//connect(this,&MyWidget::mysignal,fun);
}
MyWidget::~MyWidget()
{
}
void MyWidget::myslots1(void)
{
if(this->edit1->text()=="root"&&this->edit2->text()=="123")
{
qDebug()<<"登录成功";
QMessageBox box1(QMessageBox::Question
,"登录成功"
,"登录成功"
,QMessageBox::Ok
,this);
box1.exec();
emit mysignal1();
this->close();
}else if(this->edit1->text()==""&&this->edit2->text()=="")
{
emit mysignal2();
}else
{
qDebug()<<"登录失败";
QMessageBox box2(QMessageBox::Question
,"登录失败"
,"是否清除密码"
,QMessageBox::Ok|QMessageBox::No
,this);
box2.setDefaultButton(QMessageBox::Ok);
box2.setButtonText(QMessageBox::Ok,"确认");
box2.setButtonText(QMessageBox::No,"取消");
int res=box2.exec();
if(res==QMessageBox::Ok)
{
this->edit2->clear();
}
}
}
void MyWidget::myslots2()
{
int res=QMessageBox::warning(this
,"警告"
,"输入为空"
,QMessageBox::Ok
,QMessageBox::Ok);
if(res==QMessageBox::Ok)
{
qDebug()<<"请重新输入";
}
}
widget1.c
#include "widget1.h"
#include "ui_widget1.h"
widget1::widget1(QWidget *parent) :
QWidget(parent),
ui(new Ui::widget1)
{
ui->setupUi(this);
//设置标题
this->setWindowTitle("登录");
//设置图标
this->setWindowIcon(QIcon(":/new/prefix1/C:/Users/DC/Desktop/pictrue/qq.png"));
//设置背景颜色
this->setStyleSheet("background-color:rgb(255,255,255)");
//固定窗口大小
this->setFixedSize(540,400);
//去掉头部
//this->setWindowFlag(Qt::FramelessWindowHint);
QLabel *lab1=new QLabel("标签",this);
lab1->resize(540,400);
lab1->setStyleSheet("background-color:green");
QMovie *mv = new QMovie(":/new/prefix1/C:/Users/DC/Desktop/pictrue/zz.gif");
//将动图放入标签中
lab1->setMovie(mv);
//让动图动起来
mv->start();
//自动适应
lab1->setScaledContents(true);
}
widget1::~widget1()
{
delete ui;
}
void widget1::myslots1(void)
{
this->show();
}
2、
mainwidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include<QFontDialog> //字体对话框类
#include<QFont> //字体类
#include<QDebug> //信息调试类
#include<QMessageBox> //消息对话框类
#include<QColorDialog> //颜色对话框类
#include<QColor> //颜色类
#include<QFile> //文件类
#include<QFileDialog> //文件对话框类
QT_BEGIN_NAMESPACE
namespace Ui { class MainWidget; }
QT_END_NAMESPACE
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = nullptr);
~MainWidget();
private slots:
void on_btn1_clicked();
void on_btn2_clicked();
void on_btn3_clicked();
void on_btn4_clicked();
private:
Ui::MainWidget *ui;
};
#endif // MAINWIDGET_H
main.cpp
#include "mainwidget.h"
#include <QApplication>
#include<QFontDialog>
#include<QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;
w.show();
return a.exec();
}
mainwidget.cpp
#include "mainwidget.h"
#include "ui_mainwidget.h"
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MainWidget)
{
ui->setupUi(this);
}
MainWidget::~MainWidget()
{
delete ui;
}
void MainWidget::on_btn1_clicked()
{
//调用字体对话框
bool ok=false;
QFont f=QFontDialog::getFont(&ok,
QFont("宋体",10,10,true),
this,
"选择字体");
if(ok)
{
//将选中的文本设置相关字体
ui->textEdit->setCurrentFont(f);
}
}
void MainWidget::on_btn2_clicked()
{
//调用选择颜色对话框
QColor c=QColorDialog::getColor(QColor("red"),
this,
"选择颜色");
//当用户点击选中了颜色才执行更改颜色
if(c.isValid()==true)
{
ui->textEdit->setTextColor(c);//更改选中文本字体颜色
//ui->textEdit->setTextBackgroundColor(c);//设置选中文本的背景颜色
}
}
void MainWidget::on_btn3_clicked()
{
//调用打开文件对话框,返回文件路径
QString filename=QFileDialog::getOpenFileName(this,
"选择文件",
"./", //起始路径
"all(*.*);;images(*.png *.jpg *.gif);;源文件(*.cpp)");//过滤器
qDebug()<<filename;
//实例化一个文件对象,初始化参数为文件路径
QFile file(filename);
if(file.open(QFile::ReadOnly)==false)
{
QMessageBox::information(this,"提示","文件打开失败");
return ;
}
//读取文件中内容并展示到文件编辑器中
QByteArray msg=file.readAll();
ui->textEdit->setText(msg);
//关闭文件
file.close();
}
void MainWidget::on_btn4_clicked()
{
}