Linux 学习记录48(QT篇)

本文目录
- Linux 学习记录48(QT篇)
- 一、
- 1.
- 2.
 
- 二、
- 三、
- 四、
- 练习
- 1. 自制文本编辑器
- (0. main.cpp
- (1. txt_window.h
- (2. txt_window.cpp
 
- 2. 登录界面完善
 
一、
1.
2.
二、
三、
四、
练习
1. 自制文本编辑器

 
(0. main.cpp
#include "txt_window.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Txt_Window w;
    w.show();
    return a.exec();
}
(1. txt_window.h
#ifndef TXT_WINDOW_H
#define TXT_WINDOW_H
#include <QMainWindow>
#include <QGridLayout>
#include <QString>
#include <QPushButton>
#include <QDebug>
#include <QLabel>
#include <QIcon>
#include <QMovie>
#include <QLineEdit>
#include <QFont>
#include <QFontDialog>
#include <QVBoxLayout>
#include <QMessageBox>
#include <QImage>
#include <QColor>
#include <QColorDialog>
#include <QFile>
#include <QFileDialog>
#include <QAbstractButton>
#include <QTextEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class Txt_Window; }
QT_END_NAMESPACE
class Txt_Window : public QMainWindow
{
    Q_OBJECT
public:
    Txt_Window(QWidget *parent = nullptr);
    ~Txt_Window();
private slots:
    /*字体*/
    void font_t_signals(void);
    /*颜色*/
    void colour_t_signals(void);
    /*打开文件*/
    void open_f_signals(void);
    /*保存文件*/
    void save_f_signals(void);
private:
    Ui::Txt_Window *ui;
    QPushButton *font_t;//字体
    QPushButton *colour_t;//颜色
    QPushButton *open_f;//打开文件
    QPushButton *save_f;//保存文件
    QTextEdit* text;
};
#endif // TXT_WINDOW_H
(2. txt_window.cpp
#include "txt_window.h"
#include "ui_txt_window.h"
Txt_Window::Txt_Window(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Txt_Window)
{
    ui->setupUi(this);
    //设置固定尺寸
    this->setFixedSize(600,360);
    this->setWindowTitle("Qt window");//当前界面尺寸
    //设置窗口图标
    this->setWindowIcon(QIcon(":/new/prefix1/Qt_w.png"));//设置窗口图标
    this->setMouseTracking(true);
    /***********************动图设置***********************/
    // 创建一个QMovie对象,并加载动态图文件
    QMovie* movie = new QMovie (":/new/prefix1/cre.gif");
    // 创建一个QLabel用于显示动态图
    QLabel* label = new QLabel (this);
    // 将QMovie与QLabel关联
    label->setMovie(movie);
    label->resize(600,360);
    label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    label->setScaledContents(true);
    movie->start();//开始播放动态图
    /***********************文本编辑器设置***********************/
    text = new QTextEdit (this);
    text->resize(550,250);
    text->move(25,10);
    text->setStyleSheet("border:none;border-radius:10px;background-color:rgba(105,105,105,200);color:#fff");// 设置样式表
    /***********************按钮设置***********************/
    int Button_size[2]={80,40};//登录/取消按键设置
    int Y = 290;
    int dt_X = 60;
    font_t = new QPushButton ("字体",this);
    colour_t = new QPushButton ("颜色",this);
    open_f = new QPushButton ("打开文件",this);
    save_f = new QPushButton ("保存文件",this);
    font_t->resize(Button_size[0],Button_size[1]);
    font_t->move(50+dt_X,Y);
    font_t->setStyleSheet("border:none;border-radius:10px;background-color:rgba(60,179,113);color:#fff");
    colour_t->resize(Button_size[0],Button_size[1]);
    colour_t->move(150+dt_X,Y);
    colour_t->setStyleSheet("border:none;border-radius:10px;background-color:rgba(60,179,113);color:#fff");
    open_f->resize(Button_size[0],Button_size[1]);
    open_f->move(250+dt_X,Y);
    open_f->setStyleSheet("border:none;border-radius:10px;background-color:rgba(60,179,113);color:#fff");
    save_f->resize(Button_size[0],Button_size[1]);
    save_f->move(350+dt_X,Y);
    save_f->setStyleSheet("border:none;border-radius:10px;background-color:rgba(60,179,113);color:#fff");
    connect(font_t,&QPushButton::clicked,this,&Txt_Window::font_t_signals);
    connect(colour_t,&QPushButton::clicked,this,&Txt_Window::colour_t_signals);
    connect(open_f,&QPushButton::clicked,this,&Txt_Window::open_f_signals);
    connect(save_f,&QPushButton::clicked,this,&Txt_Window::save_f_signals);
}
/*字体*/
void Txt_Window::font_t_signals(void)
{
    bool ok;
    QFont font_t =  QFontDialog::getFont(
                &ok,
                QFont("黑体",10,2,false),
                this,
                "选择字体");
    if(ok)
    {
        /*选择了字体*/
        text->setCurrentFont(font_t);//设置当前选中的字体
    }else
    {
        /*未选择字体*/
        QMessageBox::warning(
                    this,
                    "font error!!",//
                    "未选择字体",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
    }
}
/*颜色*/
void Txt_Window::colour_t_signals(void)
{
    /*颜色选择对话框*/
    QColor color_t = QColorDialog::getColor(
                QColor(100,100,100),
                this,
                "选择颜色");
    if(color_t.isValid())
    {
        /*选择颜色合法*/
        text->setTextColor(color_t);
    }else
    {
        /*未选择颜色/不合法*/
        QMessageBox::warning(
                    this,
                    "Color error!!",//
                    "未选择颜色/不合法",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
    }
}
/*打开文件*/
void Txt_Window::open_f_signals(void)
{
    /*打开文件选择对话框*/
    QString filename = QFileDialog::getOpenFileName(
                this,
                "选择文件",
                "./",
                "所有文件(*.*);;头文件(*.h);;图片(*.png *.xpm *.jrp)");//过滤器
    QFile file(filename);
    if(!file.exists())
    {/*提示文件不存在*/
        QMessageBox::warning(
                    this,
                    "file error!!",//
                    "文件不存在",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
        return;
    }
    if(!file.open(QIODevice::ReadOnly))
    {/*打开失败*/
        QMessageBox::warning(
                    this,
                    "file error!!",//
                    "打开失败",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
        return;
    }
    QByteArray msg = file.readAll();
    this->text->setText(QString::fromLocal8Bit(msg));
    file.close();
}
/*保存文件*/
void Txt_Window::save_f_signals(void)
{
    /*打开文件选择对话框*/
    QString filename = QFileDialog::getOpenFileName(
                this,
                "选择文件",
                "./",
                "所有文件(*.*);;头文件(*.h);;图片(*.png *.xpm *.jrp)");//过滤器
    QFile file(filename);
    if(!file.exists())
    {/*提示文件不存在*/
        QMessageBox::warning(
                    this,
                    "file error!!",//
                    "文件不存在",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
        return;
    }
    if(!file.open(QIODevice::ReadWrite | QIODevice::Text))
    {/*打开失败*/
        QMessageBox::warning(
                    this,
                    "file error!!",//
                    "打开失败",//
                    QMessageBox::Ok | QMessageBox::Cancel
                    );
        return;
    }
    QString text_buf = text->toPlainText();
    file.write(text_buf.toLocal8Bit());
    file.close();
}
Txt_Window::~Txt_Window()
{
    delete ui;
}
2. 登录界面完善

 



















