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);
}
结果图: