大文件编辑器(QT)

项目需要做一个大文件编辑器,并对文件中特定的字符串进行高亮显示,尝试过几种方式。这里的大文件是指>=几百兆的文件。

一 综述实现方式

方式1 用普通的QTextEdit来分段加载显示文本,当单段文本显示完毕并且继续向下拖动滚动条时,才加载显示下一段文本;同时搭配使用QSyntexHeighlighter来进行高亮。

方式2 集成QSciscintilla编辑器,并利用词法编辑器来进行高亮。

二 优缺点

方式1,分段加载的方式会使搜索等针对全文本的操作逻辑变得复杂,且当文本很大时,使用QSyntexHeighlighter来做高亮,会降低大文件的加载速度。(分析了下,似乎因为QSyntexHeighlighter底层采用正则的方式来匹配字符串,从而拖慢速度。)

方式2,简单,但需要掌握QSciscintilla编辑器及词法器的使用方法。

备注:

1 append的效率比insert高;

2 但append会自动插入换行符;需写逻辑取消

相关推荐
笨鸟要努力6 小时前
Qt C++ windows 设置系统时间
c++·windows·qt
飞火流云8 小时前
vscode Linux下编译失败找不到文件
ide·vscode·编辑器
友友马8 小时前
『QT』事件处理机制详解 (一)
开发语言·qt
R_.L8 小时前
【QT】常用控件(概述、QWidget核心属性)
qt·控件
烧酒同学8 小时前
【Qt】QScrollArea的滑动条无法拖动(已解决)
qt·bug
Piink9 小时前
VSCode基本操作
vscode·编辑器
BD_Marathon13 小时前
【JavaWeb】VsCode的其他常见设置
ide·vscode·编辑器
landian00414 小时前
vscode对于txt格式文件使用tab缩进为3个空格
ide·vscode·编辑器
扶尔魔ocy15 小时前
【QT常用技术讲解】多线程和线程池
qt·多线程·thread
宠..15 小时前
创建文本框控件
linux·运维·服务器·开发语言·qt