C++ Qt 项目实战(一)之文本编辑器
文本编辑器例图
项目开发环境
系统版本:windows10
QT 版本: 5.9.9
开发语言:C++
已实现功能
- 文件操作:新建,打开,保存,另存为,打印,退出
- 编辑操作:复制,粘贴,剪切,查找,替换,撤销,恢复
- 文字编辑:字体,字号,加粗,倾斜,颜色
- 个性化功能:背景色修改 (软件默认背景色为护眼绿),背景图修改
- 快捷键操作:大部分功能已匹配相关的快捷键操作
未完善功能
-
查找和替换操作,仅支持从当前光标位置向后查找
-
文字居中,对齐等功能尚未实现
-
无法将图片插入文本进行操作
......
未解决BUG
-
打开操作BUG:从 文件 — 右键打开方式 — 选择本软件 — 打开后不显示文件内容
-
个性化功能BUG:背景图修改后,仅当前状态有效,退出软件重新打开后,背景图失效
-
可能有其它未知BUG,尚未发现
......
部分源码展示
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QCloseEvent>
#include <QMainWindow>
#include <QImage>
#include <QLabel>
#include <QTextEdit>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QComboBox>
#include <QFontComboBox>
#include <QToolButton>
#include <QTextCharFormat>
#include <QAction>
#include <QColorDialog>
#include <QColor>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void creatMenus(); //创建菜单栏
void creatToolbars(); //创建工具栏
void creatActions(); //创建动作
void ShowNewFile();
void ShowOpenFile();
void loadFile(QString & filename);
bool maybeSave();
bool saveFile(QString & filename);
bool saveAs();
void showPrintText();
void mergeFormat(QTextCharFormat format);
void ShowFontComBox(QString comboStr);
void ShowSizeSpinBox(QString spinValue);
void ShowBoldBtn();
void ShowItalicBtn();
void ShowUnderlineBtn();
void ShowColorBtn();
void ShowCurrentFormatChanged(const QTextCharFormat &fmt);
void ShowFind();
void ShowReplace();
void SetBackgroundColor(QColor color);
void SetBackgroundImage();
protected:
void closeEvent(QCloseEvent *event);
private:
QMenu * fileMenu; //菜单栏各项
QMenu * editMenu;
QMenu * personaliseMenu;
QMenu * helpMenu;
QToolBar * filetoolbar; //文件工具栏
QToolBar * fontToolBar; //字体工具栏
QImage img;
QString filePath;
QTextEdit * text;
bool isUntitled;
QAction * openFileAction; //文件菜单项
QAction * newFileAction;
QAction * saveFileAction;
QAction * saveasFileAction;
QAction * printFileAction;
QAction * exitAction;
QAction * copyAction; //编辑菜单项
QAction * pasteAction;
QAction * cutAction;
QAction * undoAction;
QAction * restoreAction;
QAction * findAction;
QAction * replaceAction;
QAction * setBkColorAction;
QAction * setBkImageAction;
QAction * helpInformationAction; //帮助菜单项
QAction * aboutSoftwareAction;
QAction * AboutAuthorAction;
QLabel * fontLabel1; //字体设置项
QFontComboBox * fontComboBox;
QLabel * fontLabel2;
QComboBox * sizeComboBox;
QToolButton * boldBtn;
QToolButton * italicBtn;
QToolButton * underlineBtn;
QToolButton * colorBtn;
};
#endif // MAINWINDOW_H