关于如何安装和入门,看我这些博客,会很有收获的 :
QScintilla如何安装和入门(初学者)_标biao的博客-CSDN博客_qscintilla
QScintilla学习和使用杂记_我是标同学的博客-CSDN博客_qsciscintilla
QScintilla滚动条自适应的解决方法_我是标同学的博客-CSDN博客_qsciscintilla
QScintilla的各种颜色字体等设置_我是标同学的博客-CSDN博客
QsciScintilla等编辑器实现不同区域鼠标右键处理方式不同的方法_我是标同学的博客-CSDN博客
QScintilla的信号汇总和解释_我是标同学的博客-CSDN博客
QScintilla官网:QScintilla
QScintilla来源于Scintilla(Scintilla是纯c++写的,所以qt还不能直接使用,网站 Scintilla and SciTE)。所以有了QScintilla
Qt这边类的继承关系:其实qt自己的QPlainTextEdit也是继承于QAbstractScrollArea,所以QScintilla就是一个类似的控件。
Scintilla和Qt的整个继承关系 如下图所示:
编辑器的功能实现,主要用到两个类 QScintillaBase,QScintilla,关于它们有哪些对外的函数,我们只需要查看它们对应的头文件即可。
牵扯到的qsci头文件有如下几个:
#include//没啥东西 #include //主要是用于绑定一个按键和一个命令,命令表示一个执行动作,比如当前行上移,等。可以用来实现快捷键的操作功能。该头文件是qsci内部用的,不对用户开放。 #include //用于编辑器加载的一个文档的,可以多个编辑器同时加载要给文档,实现多视图同时编辑。该头文件是qsci内部用的,不对用户开放。 #include //它实现了标准的Scintilla API(sci原生的那些函数),该API由许多消息组成,每个消息最多带两个参数。而且里面提供了大量的信号函数(值得一看)。但是该文件的调用接口还是比较底层,通过给QSci发消息的方式使用,还是太难搞了,不符合qt库的风格。关于这个sci的这些原生库使用方式,可以查看官网的 Scintilla Documentation 有非常丰富细致的讲解,Qsci因为是对它进行的封装,所以接口都是一样的,这个文档讲解Qsci同样适用。如果是实践例子,直接查看notepade++这个有名的编辑器 https://notepad-plus-plus.org/
#include//就是对qsciscintillabase的继承,也就是进一步封装和丰富了,具有常用的编辑器需要的功能,函数调用方式了,符合qt库风格。里面只封装了一些常用的信号函数。里面的函数太多了,有不懂的,直接在该头文件里面看,就是最快的学习方式,里面的注释比较好,命名也都见名知意。但是这些头文件的注释是格式化的,是为了生成对应文档用的,可读性还可进一步增强。下面说的pyqt官网的这个网站就是将这些注释进行了文档化,更加的容易读了。 QScintilla: QsciScintilla Class Reference
qt和pyqt的关系可以看我这个博客 Qt和PyQt和PySide之间的关系_标biao的博客-CSDN博客
参考博客: