我正在开发一个简单的编辑器,并且在我的编辑器中我正在尝试实现某事。像这样:例如,用户键入“void”然后我发出一个信号,gui 中的某个地方会捕捉到它,它会自行改变。我在代码中使用了语法高亮示例,并在 highlightBlock 函数中发出了一个信号:
void Highlighter::highlightBlock(const QString &text)
{
foreach (const HighlightingRule &rule, highlightingRules) {
QRegExp expression(rule.pattern);
if (expression.exactMatch("void")==true) {
emit voidPrinted(2);
}
int index = expression.indexIn(text);
while (index >= 0) {
int length = expression.matchedLength();
...
}
但是当我运行程序时,信号总是在不输入 void 的情况下发出。文档说“只要富文本引擎需要,即当文本块发生更改时,就会自动调用 highlightBlock() 函数。” 而且我认为我只在表达式无效时才发出,但显然,我错了。有什么帮助吗?