QT:实现一个W P S的界面以及操作,每一步都有图解,一步一步设置和解析

1代码实现:

1.1.h文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenuBar>
#include <QAction>
#include <QToolButton>
#include <QToolBar>
#include <QTextEdit>
#include <QFileDialog>
#include <QDebug>
#include <QMessageBox>
#include <QFont>
#include <QFontDialog>
#include <QColorDialog>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void initMenuBar();
    void initToolBar();
private:
    QMenuBar* mainMenuBar;
    QMenu* fileMenu;
    QMenu* editorMenu;
    QMenu* buildMenu;

    QAction* openfileAction;
    QAction* savefileAction;
    QAction* closefileAction;

    QAction* copyAction;

    //定义工具栏
    QToolBar* fileBar;
    QToolBar* fontBar;

    QToolButton* fontBtn;
    QToolButton* colorBtn;

    //定义中央编辑器
    QTextEdit* mainEdit;

public slots:
    void close_editor();
    void read_file();
    void write_file();
    void char_format();
    void set_color();
};
#endif // MAINWINDOW_H

1.2cpp文件

#include "mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);

    this->mainEdit=new QTextEdit(this);
    this->setCentralWidget(mainEdit);
         
    initMenuBar();
    initToolBar();

    //信号与槽的逻辑:关闭
    connect(closefileAction,&QAction::triggered,this,&MainWindow::close_editor);
    //文件的读取操作:
    //1.获取文件的内容
    connect(openfileAction,&QAction::triggered,this,&MainWindow::read_file);
    //2.把写的内容保存
    connect(savefileAction,&QAction::triggered,this,&MainWindow::write_file);
    //3设置字体
    connect(fontBtn,&QToolButton::clicked,this,&MainWindow::char_format);
    //4设置颜色
    connect(colorBtn,&QToolButton::clicked,this,&MainWindow::set_color);
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    openfileAction->setShortcut(QKeySequence("Ctrl+O"));
    openfileAction->setIcon(QIcon(":/new/prefix1/tubiao/New.png"));

    savefileAction=fileMenu->addAction("保存文件");
    savefileAction->setShortcut(QKeySequence("Ctrl+S"));
    savefileAction->setIcon(QIcon(":/new/prefix1/tubiao/save.png"));

    closefileAction=fileMenu->addAction("关闭");
    closefileAction->setShortcut(QKeySequence("Ctrl+X"));
    closefileAction->setIcon(QIcon(":/new/prefix1/tubiao/stop.png"));

    copyAction=editorMenu->addAction("拷贝");
    copyAction->setShortcut(QKeySequence("Ctrl+C"));
    copyAction->setIcon(QIcon(":/new/prefix1/tubiao/butterfly1.png"));
}

void MainWindow::initToolBar()
{
    fileBar=this->addToolBar("fileBar");
    fileBar->addAction(openfileAction);
    fileBar->addAction(savefileAction);
    fileBar->addAction(closefileAction);

    fontBar=this->addToolBar("fontBar");
    fontBtn=new QToolButton(this);
    fontBtn->setText("字体按钮");
    fontBtn->setIcon(QIcon(":/new/prefix1/tubiao/Edit.png"));

    colorBtn=new QToolButton(this);
    colorBtn->setText("颜色按钮");
    colorBtn->setIcon(QIcon(":/new/prefix1/tubiao/write2file.png"));

    fontBar->addWidget(fontBtn);
    fontBar->addWidget(colorBtn);
}

void MainWindow::close_editor()
{
    this->close();
}

void MainWindow::read_file()
{
    QString filter="所有文件(*.*);;文本文件(*.text);;源文件(*.h *.cpp *.c)";
    QString file_dir=QFileDialog::getOpenFileName(this,"获取文件路径选择","./",filter);
    qDebug()<<file_dir;

    if(file_dir.isNull()){
        return;
    }

    QFile file(file_dir);
    file.open(QIODevice::ReadOnly);
    mainEdit->clear();
    mainEdit->append(file.readAll());

    file.close();
}

void MainWindow::write_file()
{
    QString filter="所有文件(*.*);;文本文件(*.text);;源文件(*.h *.cpp *.c)";
    QString file_dir=QFileDialog::getSaveFileName(this,"选择要保存的路径","./",filter);

    if(file_dir.isNull()){
        return;
    }

    QFile file(file_dir);
    file.open(QIODevice::WriteOnly | QIODevice::Truncate);
    if(!file.isOpen()){
        QMessageBox::information(this,"提示","没有打开成功");
        return;
    }

    file.write(mainEdit->toPlainText().toUtf8());
    file.close();
}

void MainWindow::char_format()
{
    bool ok;
    QFont font=QFontDialog::getFont(&ok,this);

    if(!ok){
        return;
    }

    QTextCharFormat fmt;
    fmt.setFont(font);

    mainEdit->mergeCurrentCharFormat(fmt);
}

void MainWindow::set_color()
{
   QColor color=QColorDialog::getColor(Qt::red,this,"选择颜色");
   if(!color.isValid()){
       return;
   }

   QTextCharFormat fmt;

   fmt.setForeground(QBrush(color));
   mainEdit->mergeCurrentCharFormat(fmt);
}



2步骤:

2.1先给设置一些基本操作语句:

2.1.1.h文件:
 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenuBar>
#include <QAction>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void initMenuBar();
    void initToolBar();
private:
    QMenuBar* mainMenuBar;
    QMenu* fileMenu;
    QMenu* editorMenu;
    QMenu* buildMenu;

    QAction* openfileAction;
    QAction* savefileAction;
    QAction* closefileAction;

    QAction* copyAction;
};
#endif // MAINWINDOW_H

2.2.2cpp文件:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);
    initMenuBar();
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    savefileAction=fileMenu->addAction("保存文件");
    closefileAction=fileMenu->addAction("关闭");

    copyAction=editorMenu->addAction("拷贝");
}

void MainWindow::initToolBar()
{

}

结果图:
 

 2.2设置快捷键:

2.2.1cpp文件:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);
    initMenuBar();
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    openfileAction->setShortcut(QKeySequence("Ctrl+O"));

    savefileAction=fileMenu->addAction("保存文件");
    savefileAction->setShortcut(QKeySequence("Ctrl+S"));

    closefileAction=fileMenu->addAction("关闭");
    closefileAction->setShortcut(QKeySequence("Ctrl+X"));

    copyAction=editorMenu->addAction("拷贝");
    copyAction->setShortcut(QKeySequence("Ctrl+C"));

}

void MainWindow::initToolBar()
{

}

结果图:

 2.3工具栏:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);
    initMenuBar();
    initToolBar();
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    openfileAction->setShortcut(QKeySequence("Ctrl+O"));

    savefileAction=fileMenu->addAction("保存文件");
    savefileAction->setShortcut(QKeySequence("Ctrl+S"));

    closefileAction=fileMenu->addAction("关闭");
    closefileAction->setShortcut(QKeySequence("Ctrl+X"));

    copyAction=editorMenu->addAction("拷贝");
    copyAction->setShortcut(QKeySequence("Ctrl+C"));

}

void MainWindow::initToolBar()
{
    fileBar=this->addToolBar("fileBar");
    fileBar->addAction(openfileAction);
    fileBar->addAction(savefileAction);
    fileBar->addAction(closefileAction);

    fontBar=this->addToolBar("fontBar");
    fontBtn=new QToolButton(this);
    fontBtn->setText("字体按钮");
    colorBtn=new QToolButton(this);
    colorBtn->setText("颜色按钮");

    fontBar->addWidget(fontBtn);
    fontBar->addWidget(colorBtn);
}

结果图:

 2.4设置图标:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);
    initMenuBar();
    initToolBar();
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    openfileAction->setShortcut(QKeySequence("Ctrl+O"));
    openfileAction->setIcon(QIcon(":/new/prefix1/tubiao/New.png"));

    savefileAction=fileMenu->addAction("保存文件");
    savefileAction->setShortcut(QKeySequence("Ctrl+S"));
    savefileAction->setIcon(QIcon(":/new/prefix1/tubiao/save.png"));

    closefileAction=fileMenu->addAction("关闭");
    closefileAction->setShortcut(QKeySequence("Ctrl+X"));
    closefileAction->setIcon(QIcon(":/new/prefix1/tubiao/stop.png"));

    copyAction=editorMenu->addAction("拷贝");
    copyAction->setShortcut(QKeySequence("Ctrl+C"));
    copyAction->setIcon(QIcon(":/new/prefix1/tubiao/butterfly1.png"));
}

void MainWindow::initToolBar()
{
    fileBar=this->addToolBar("fileBar");
    fileBar->addAction(openfileAction);
    fileBar->addAction(savefileAction);
    fileBar->addAction(closefileAction);

    fontBar=this->addToolBar("fontBar");
    fontBtn=new QToolButton(this);
    fontBtn->setText("字体按钮");
    fontBtn->setIcon(QIcon(":/new/prefix1/tubiao/Edit.png"));

    colorBtn=new QToolButton(this);
    colorBtn->setText("颜色按钮");
    colorBtn->setIcon(QIcon(":/new/prefix1/tubiao/write2file.png"));

    fontBar->addWidget(fontBtn);
    fontBar->addWidget(colorBtn);
}

结果图:

 2.5设置中央编辑器:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(1024,768);

    this->mainEdit=new QTextEdit(this);
    this->setCentralWidget(mainEdit);

    initMenuBar();
    initToolBar();
}

MainWindow::~MainWindow()
{
}

void MainWindow::initMenuBar()
{
    mainMenuBar=this->menuBar();
    fileMenu=mainMenuBar->addMenu("文件");
    editorMenu=mainMenuBar->addMenu("编辑");
    buildMenu=mainMenuBar->addMenu("构建");

    openfileAction=fileMenu->addAction("打开文件");
    openfileAction->setShortcut(QKeySequence("Ctrl+O"));
    openfileAction->setIcon(QIcon(":/new/prefix1/tubiao/New.png"));

    savefileAction=fileMenu->addAction("保存文件");
    savefileAction->setShortcut(QKeySequence("Ctrl+S"));
    savefileAction->setIcon(QIcon(":/new/prefix1/tubiao/save.png"));

    closefileAction=fileMenu->addAction("关闭");
    closefileAction->setShortcut(QKeySequence("Ctrl+X"));
    closefileAction->setIcon(QIcon(":/new/prefix1/tubiao/stop.png"));

    copyAction=editorMenu->addAction("拷贝");
    copyAction->setShortcut(QKeySequence("Ctrl+C"));
    copyAction->setIcon(QIcon(":/new/prefix1/tubiao/butterfly1.png"));
}

void MainWindow::initToolBar()
{
    fileBar=this->addToolBar("fileBar");
    fileBar->addAction(openfileAction);
    fileBar->addAction(savefileAction);
    fileBar->addAction(closefileAction);

    fontBar=this->addToolBar("fontBar");
    fontBtn=new QToolButton(this);
    fontBtn->setText("字体按钮");
    fontBtn->setIcon(QIcon(":/new/prefix1/tubiao/Edit.png"));

    colorBtn=new QToolButton(this);
    colorBtn->setText("颜色按钮");
    colorBtn->setIcon(QIcon(":/new/prefix1/tubiao/write2file.png"));

    fontBar->addWidget(fontBtn);
    fontBar->addWidget(colorBtn);
}

结果图:

猜你喜欢

转载自blog.csdn.net/a2998658795/article/details/126189896