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
打包软件下载
https://wws.lanzous.com/i5HeRfmkf6d
程序源码下载
https://wws.lanzous.com/iDwC2fmkf8f
最后
本人 QQ 2694218551,欢迎加我一起讨论编程问题!!
C++ Qt 项目实战(一)之文本编辑器的更多相关文章
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
- web项目中nicedit富文本编辑器的使用
web项目中nicedit富文本编辑器的使用 一.为什么要用富文本编辑器? 先说什么是富文本编辑器吧,普通的html中input或textarea标签只能进行简单的输入,而做不到其他的文本调整功能,甚 ...
- flask项目中使用富文本编辑器
flask是一个用python编写的轻量级web框架,基于Werkzeug WSGI(WSGI: python的服务器网关接口)工具箱和Jinja2模板,因为它使用简单的核心,用extension增加 ...
- ASP.MVC 项目中使用 UEditor 文本编辑器
1.下载UEditor 源文件,并导入项目中 2.添加项目中需要使用的CSS和JS //Ueditor 文本编辑器必备的StyleBundle和ScriptBundle StyleBundle ued ...
- ssm项目中ueditor富文本编辑器的使用
一.下载 https://ueditor.baidu.com/website/index.html 将ueditor放到项目中合适的位置 二 . 配置文件上传路径 在utf8-jsp/jsp/conf ...
- Django项目中添加富文本编辑器django-ckeditor
django-ckeditor库的使用步骤: 1.在命令行下安装django-ckeditor这个库: 命令:pip install django-ckeditor 2.安装成功后,配置Django项 ...
- vue项目使用Ueditor富文本编辑器总结
我使用的是前端大佬封装的vue-ueditor-wrap插件,结合ueditor本身的压缩包开发的. 1.下载vue-ueditor-wrap: npm install vue-ueditor-wra ...
- Qt学习笔记-制作一个文本编辑器
创建一个MainWindow工程.添加一个TextEdit.垂直布局. 在menu上面创建新的action. 在新建的时候判断文本有没有被修改. 下面,将某个文件打开读入到TextEdit中. 保存文 ...
- MVC项目中应用富文本编辑器UEditor中的几个坑
UEditor:百度出品 官网连接:http://ueditor.baidu.com/website/ 错误现象:在官网上复制到本地后,上传图片功能不能用, 控制台提示:“请求后台配置项http错误, ...
随机推荐
- javascript 中介者模式 mediator
* player.js /** * 中介者模式 * @param {*} name 角色名称 * @param {*} teamColor 队伍颜色 */ function Player(name, ...
- TI AM335x ARM Cortex-A8工业级核心板,工业网关、工业HMI等用户首选
创龙科技近期推出了ti AM335x ARM Cortex-A8工业级核心板,它拥有高性能.低功耗.低成本.接口丰富等优势,成为了工业网关.工业HMI等用户的首要选择.另外,核心板采用邮票孔连接方式, ...
- P7115-[NOIP2020]移球游戏【构造】
正题 题目链接:https://www.luogu.com.cn/problem/P7115 题目大意 \(n+1\)个柱子,前面\(n\)个上面各有\(m\)个球,球有\(n\)种颜色,每种\(m\ ...
- AT2567-[ARC074C]RGB Sequence【dp】
正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- VirtualBox设置双网卡实现主宿互访及虚拟机访问互联网总结
1,配置网络 注:VirtualBox要在全局工具-主机网络管理器里新建一个虚拟网卡. 然后虚拟机的网卡1设置为host-only,界面名称为新建的虚拟网卡(我这里为了不跟主机ip冲突,设置成了不同网 ...
- Serverless:这真的是未来吗?(一)
原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_1/ 作者 | Lee Briggs & Piers Karsen ...
- Unity——资源文件夹介绍
Unity资源文件夹介绍 1.编辑时 在Asset文件下存在Resources和SteamingAsset文件夹: Resources 只读不可修改,打包时直接写死,没有办法通过热更新替换资源: 可以 ...
- 洛谷4366——最短路(dijkstra,思维,异或)
题目大意 给定一个n个点,m条边的图,每条边有边权,而每个点\(i\)也可以直接到达\(j\),代价是\(i\ xor\ j\),给定一个S和T,求S到T的最小代价 其中\(n\le100000,m\ ...
- 来说说JPA、Hibernate、Spring Data JPA之间的什么关系?
目录 JPA Hibernate Spring Data JPA 实践 来说说JPA.Hibernate.Spring Data JPA之间的什么关系 Java 持久层框架访问数据库的方式大致分为两种 ...