嵌入式5-8

发布于:2024-05-08 ⋅ 阅读:(21) ⋅ 点赞:(0)

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()
{

}