2

そこで、C++ と Qt で簡単なコード エディターを作成しています。QSyntaxHighlighter クラスを使用して、いくつかのシンタックス ハイライト (SH) ルールを作成することができました。ここで、この機能を有効または無効にします。QTextEdit で SH を有効にするために、ポインターがあります。

SyntaxHighlight *highlighter;
highlighter = new SyntaxHighlight(editor->document());

私がしなければならないことは、どういうわけかこのポインターが何も指さないようにすることです。しかし、結果なしで NULL と 0 を指すようにしようとしました。デコンストラクタも作成し、 を使用しdelete highlighterました。何も機能していないようです。何か案は?

さらにコードを提供する必要がある場合はお知らせください。

4

1 に答える 1

3

蛍光ペンを削除するのではなく、次を使用する必要があります。

highlighter->setDocument(0);

編集:蛍光ペンの削除も機能するためQSyntaxHighlighter、ドキュメントに誤って別の蛍光ペンを設定したか、正しい蛍光ペンを無効にしたり削除したりしていない可能性があります。

findChildシンタックスハイライトはそれ自体をドキュメントの子としてインストールするため、/を使用して/それらを取得できますfindChildren

foreach(QSyntaxHighlighter* highlighter,
        ui->textEdit->findChildren<QSyntaxHighlighter*>()) {
    delete highlighter;
}
于 2012-05-03T23:20:04.817 に答える