文本编辑器例图

项目开发环境

系统版本: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://wws.lanzous.com/i5HeRfmkf6d

程序源码下载

https://wws.lanzous.com/iDwC2fmkf8f

最后

本人 QQ 2694218551,欢迎加我一起讨论编程问题!!

C++ Qt 项目实战(一)之文本编辑器的更多相关文章

  1. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  2. web项目中nicedit富文本编辑器的使用

    web项目中nicedit富文本编辑器的使用 一.为什么要用富文本编辑器? 先说什么是富文本编辑器吧,普通的html中input或textarea标签只能进行简单的输入,而做不到其他的文本调整功能,甚 ...

  3. flask项目中使用富文本编辑器

    flask是一个用python编写的轻量级web框架,基于Werkzeug WSGI(WSGI: python的服务器网关接口)工具箱和Jinja2模板,因为它使用简单的核心,用extension增加 ...

  4. ASP.MVC 项目中使用 UEditor 文本编辑器

    1.下载UEditor 源文件,并导入项目中 2.添加项目中需要使用的CSS和JS //Ueditor 文本编辑器必备的StyleBundle和ScriptBundle StyleBundle ued ...

  5. ssm项目中ueditor富文本编辑器的使用

    一.下载 https://ueditor.baidu.com/website/index.html 将ueditor放到项目中合适的位置 二 . 配置文件上传路径 在utf8-jsp/jsp/conf ...

  6. Django项目中添加富文本编辑器django-ckeditor

    django-ckeditor库的使用步骤: 1.在命令行下安装django-ckeditor这个库: 命令:pip install django-ckeditor 2.安装成功后,配置Django项 ...

  7. vue项目使用Ueditor富文本编辑器总结

    我使用的是前端大佬封装的vue-ueditor-wrap插件,结合ueditor本身的压缩包开发的. 1.下载vue-ueditor-wrap: npm install vue-ueditor-wra ...

  8. Qt学习笔记-制作一个文本编辑器

    创建一个MainWindow工程.添加一个TextEdit.垂直布局. 在menu上面创建新的action. 在新建的时候判断文本有没有被修改. 下面,将某个文件打开读入到TextEdit中. 保存文 ...

  9. MVC项目中应用富文本编辑器UEditor中的几个坑

    UEditor:百度出品 官网连接:http://ueditor.baidu.com/website/ 错误现象:在官网上复制到本地后,上传图片功能不能用, 控制台提示:“请求后台配置项http错误, ...

随机推荐

  1. javascript 中介者模式 mediator

    * player.js /** * 中介者模式 * @param {*} name 角色名称 * @param {*} teamColor 队伍颜色 */ function Player(name, ...

  2. TI AM335x ARM Cortex-A8工业级核心板,工业网关、工业HMI等用户首选

    创龙科技近期推出了ti AM335x ARM Cortex-A8工业级核心板,它拥有高性能.低功耗.低成本.接口丰富等优势,成为了工业网关.工业HMI等用户的首要选择.另外,核心板采用邮票孔连接方式, ...

  3. P7115-[NOIP2020]移球游戏【构造】

    正题 题目链接:https://www.luogu.com.cn/problem/P7115 题目大意 \(n+1\)个柱子,前面\(n\)个上面各有\(m\)个球,球有\(n\)种颜色,每种\(m\ ...

  4. AT2567-[ARC074C]RGB Sequence【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ...

  5. ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用

    前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...

  6. VirtualBox设置双网卡实现主宿互访及虚拟机访问互联网总结

    1,配置网络 注:VirtualBox要在全局工具-主机网络管理器里新建一个虚拟网卡. 然后虚拟机的网卡1设置为host-only,界面名称为新建的虚拟网卡(我这里为了不跟主机ip冲突,设置成了不同网 ...

  7. Serverless:这真的是未来吗?(一)

    原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_1/ 作者 | Lee Briggs & Piers Karsen ...

  8. Unity——资源文件夹介绍

    Unity资源文件夹介绍 1.编辑时 在Asset文件下存在Resources和SteamingAsset文件夹: Resources 只读不可修改,打包时直接写死,没有办法通过热更新替换资源: 可以 ...

  9. 洛谷4366——最短路(dijkstra,思维,异或)

    题目大意 给定一个n个点,m条边的图,每条边有边权,而每个点\(i\)也可以直接到达\(j\),代价是\(i\ xor\ j\),给定一个S和T,求S到T的最小代价 其中\(n\le100000,m\ ...

  10. 来说说JPA、Hibernate、Spring Data JPA之间的什么关系?

    目录 JPA Hibernate Spring Data JPA 实践 来说说JPA.Hibernate.Spring Data JPA之间的什么关系 Java 持久层框架访问数据库的方式大致分为两种 ...