Qt,从零开始,开发专属IDE
目录
前言
最近几年,笔者的工作大部分都是在和Qt打交道,随着学习渐渐深入,也就萌生了一个想法,去实现一个属于自己的IDE。说干就干,从去年8月开始,利用空闲时间开发,一晃就到了现在~
刚开始的想法很简单,只是觉得平时一边写代码,一边查资料,需要打开两个软件来回切换,这实在太麻烦了,所以就想在自己的IDE中实现同时进行编辑和查阅。
但在后来,每次在其他地方看到一些非常实用的功能后,就又会忍不住钻研一番,然后添加进自己的IDE。
开发准备
- 界面设计
虽然想法很多,但不得不承认,笔者本身的设计能力还有所欠缺,所以就参照VS Code的界面来进行IDE外观设计
- 开发环境
Qt 5.15.2
实现功能
截至目前,IDE有以下比较成熟的功能:
-
框架
- 文件类型管理
提供文件类型的判断
- 文件图标管理
提供文件在IDE中的图标显示
- 文件加载管理
将文件以特定形式加载到IDE
- 日志输出管理
将IDE中的日志以特定方式输出
- 全局设置管理
提供IDE设置项的读取和写入
- 历史记录管理
提供IDE历史信息的读取和写入
-
主窗口
- 打开文本文件
用编辑器打开文件,提供常规编辑功能,并对部分文件类型(cpp, py, json等)提供高亮等特性
- 打开图片文件
提供图片文件放大缩小查看功能
- 打开音频文件
用音频播放器打开文件,提供常规播放功能
- 打开视频文件
用视频播放器打开文件,提供常规播放功能
- 打开网页窗口
提供常规网页浏览功能
- 打开网页调试
提供常规网页调试功能
- 打开网页预览
提供Markdown文件的简单预览
- 打开设置界面
提供IDE设置项的可视化查看和编辑
-
控制面板
- 资源管理
提供视图列表查看和打开目录功能
- 项目管理
提供一种简单的自定义C++项目管理
-
功能面板
- 日志查看
提供IDE中日志的可视化显示
- 终端
提供简单的终端操作窗口
- 搜索
提供多种模式的文件搜索功能
- 输出
用于查看IDE运行中特定任务的运行输出
- 编译
配合项目管理,可视化展示项目编译流程
- 运行
配合项目管理,控制可执行程序的执行
-
辅助面板
- 上网管理
提供网页基础操作、书签管理和历史查看功能
上面只是大致概括,有些小功能没办法总结出来,有一些还在开发验证中~
成品展示
总体来说,笔者感觉这个IDE用着还是挺顺手的。最起码现在上网,笔者已经不再用浏览器了,而是更习惯用自己的IDE, 哈哈~
IDE的效果展示如下:
-
IDE主体框架
-
控制面板
-
资源管理
-
项目管理
-
-
功能面板
-
日志查看
-
终端
-
搜索
-
输出
-
编译
-
运行
-
-
辅助面板
- 上网管理
- 上网管理
-
主窗口
-
打开文本文件
-
打开图片文件
-
打开音频文件
-
打开视频文件
-
打开网页窗口
-
打开网页调试
-
打开网页预览
-
打开设置界面
-
后续计划
说到后续的计划,其实笔者现在也还不明确。因为之前在IDE的开发过程中,笔者都是边发现、边学习、边完善,并没有非常明确的目标。
虽然细节不好说,但笔者对这个IDE还是有个大方向上的愿景,主要包括以下三点:
- 完善文本编辑功能
目前IDE中虽然实现了不少功能,但在文本编辑这块,却只是提供了常规编辑和部分高亮功能,这怎么能够对得起"IDE"这个名称!
所以,对于文本编辑这部分,笔者后续打算研究一下C/C++的函数提示、跳转、静态检查等。当然,对于这方面,笔者没有相关经验,也不知道能不能搞得定…
- 完善项目管理功能
目前IDE中的项目管理还很粗糙,笔者后续打算参考一下现有的其他成熟IDE,对这部分重新设计一下。
除此之外,项目管理也只提供了基于g++的编译功能,后续打算加入gdb调试功能。不过一想到gdb的复杂性,还要去可视化到在界面上,感觉又是一个难搞的大工程,头大…
- 开发插件系统
对于插件系统,笔者之前就已经考虑到了。随着功能越来越多,也不可能想加什么功能,就直接在整个IDE的代码上增加,这容易破坏IDE的整体架构,所以插件系统是必须的。
基于插件系统,如果想添加新功能,就能以开发插件库的形式进行。
后语
仔细一想,笔者为这个IDE投进去了很多空闲时间,倾注了不少心血,可能一部分头发也因为这个跟我闹掰分手了[惨=-=]。不过看到IDE成品后,心里还是挺有成就感的。
后续有时间的话,笔者也会写系列博客来介绍整个IDE的实现过程。若是感兴趣的码友,可以收藏此博文,欢迎多多交流。