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中虽然实现了不少功能,但在文本编辑这块,却只是提供了常规编辑和部分高亮功能,这怎么能够对得起"IDE"这个名称!
  所以,对于文本编辑这部分,笔者后续打算研究一下C/C++的函数提示、跳转、静态检查等。当然,对于这方面,笔者没有相关经验,也不知道能不能搞得定…

  • 完善项目管理功能

  目前IDE中的项目管理还很粗糙,笔者后续打算参考一下现有的其他成熟IDE,对这部分重新设计一下。
  除此之外,项目管理也只提供了基于g++的编译功能,后续打算加入gdb调试功能。不过一想到gdb的复杂性,还要去可视化到在界面上,感觉又是一个难搞的大工程,头大…

  • 开发插件系统

  对于插件系统,笔者之前就已经考虑到了。随着功能越来越多,也不可能想加什么功能,就直接在整个IDE的代码上增加,这容易破坏IDE的整体架构,所以插件系统是必须的。
  基于插件系统,如果想添加新功能,就能以开发插件库的形式进行。

后语

  仔细一想,笔者为这个IDE投进去了很多空闲时间,倾注了不少心血,可能一部分头发也因为这个跟我闹掰分手了[惨=-=]。不过看到IDE成品后,心里还是挺有成就感的。
  后续有时间的话,笔者也会写系列博客来介绍整个IDE的实现过程。若是感兴趣的码友,可以收藏此博文,欢迎多多交流。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐