私は単純なエディターを開発しており、エディターで sth を実装しようとしています。このように:たとえば、ユーザーが「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() 関数は、リッチ テキスト エンジンが必要とするとき、つまり、変更されたテキスト ブロックがあるときはいつでも自動的に呼び出される」と記載されています。表現が無効な場合にのみ放出すると思いますが、明らかに間違っています。何か助けはありますか?