C++ Qt 项目实战(一)之文本编辑器

文本编辑器例图

image-20211204094637807

image-20211204094951872

image-20211204095010160

image-20211204095031423

image-20211204095103208

image-20211204095156770

项目开发环境

系统版本:windows10
QT 版本: 5.9.9
开发语言:C++

已实现功能

  1. 文件操作:新建,打开,保存,另存为,打印,退出
  2. 编辑操作:复制,粘贴,剪切,查找,替换,撤销,恢复
  3. 文字编辑:字体,字号,加粗,倾斜,颜色
  4. 个性化功能:背景色修改 (软件默认背景色为护眼绿),背景图修改
  5. 快捷键操作:大部分功能已匹配相关的快捷键操作

未完善功能

  1. 查找和替换操作,仅支持从当前光标位置向后查找

  2. 文字居中,对齐等功能尚未实现

  3. 无法将图片插入文本进行操作

    ......

未解决BUG

  1. 打开操作BUG:从 文件 — 右键打开方式 — 选择本软件 — 打开后不显示文件内容

  2. 个性化功能BUG:背景图修改后,仅当前状态有效,退出软件重新打开后,背景图失效

  3. 可能有其它未知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

相关下载

软件包:https://www.lanzouw.com/i5HeRfmkf6d

源码包:https://www.lanzouw.com/iDwC2fmkf8f

posted @ 2020-10-11 21:15  FreeK0x00  阅读(995)  评论(0编辑  收藏  举报