文本高亮
对于textedit里录入的部分单词我们可以实现高亮,实现高亮主要依赖于QSyntaxHighlighter。
我们先创建一个Qt Application类,类名MainWindow, 然后新增一个C++类,类名为MySyntaxHighlighter。
1 |
|
这个类声明了highlightBlock函数,这是一个虚函数继承自QSyntaxHighlighter。每次我们录入文字时,会自动调用这个函数。下面实现MySyntaxHighlighter类
1 |
|
在highlightBlock函数中,我们实现了一个高亮的文字模式,当录入的字符串包含char时,char会被高亮。
我们在mainwindow.ui中添加一个textedit,然后在mainwindow的构造函数中添加我们刚才编写的高亮模块。
1 | MainWindow::MainWindow(QWidget *parent) : |
程序运行后,在编辑器中输入hello char,会看到char高亮了
实现代码编辑器
Qt 的案例中有提供过文本高亮和显示行号的demo,我把它整理起来了。
我们先声明codeeditor类,以及行号显示的类
1 |
|
具体代码类的实现
1 |
|
上面实现了代码编辑器的行号和当前行黄色高亮显示。
接下来实现高亮显示类
1 |
|
具体实现细节如下,先定义高亮的正则规则,然后在highlightBlock函数里根据规则点亮不同的单词
1 |
|
接下来在MainWindow里添加editor
1 | void MainWindow::setupEditor() |
运行程序后,输入部分代码显示如下
具体细节大家可以参考代码理解即可。