2012-05-03 19 views
2

C++とQtで簡単なコードエディタを作成しています。 QSyntaxHighlighterクラスを使用して構文のハイライト(SH)規則を作成しました。 ここでは、この機能を有効または無効にしたいと考えています。 QTextEditにSHを有効にするには、私が持っているポインタ:QTextEditの構文ハイライトを有効/無効にする

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

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

もっとコードを入力する必要がある場合は教えてください。

+0

ランダムな思考を - 多分あなたはSyntaxHighlightを削除した後QTextEditウィジェットを再描画する必要がありますか? – arrowd

+0

ええ、私はそれを試みました。 2つの問題。 1:うまくいきませんでした:) 2:それを例えば黒に再描画すると、それを再描画した後でも引き続き色付けされます。 – raze

答えて

3

よりもむしろ蛍光ペンを削除しようと、あなたが使用する必要があります。

highlighter->setDocument(0); 

編集:は蛍光ペンを削除するにも動作しますので、あなたはおそらく不注意文書に別のQSyntaxHighlighterを設定している、またはあなたが無効にされていませんまたは正しいものを削除することができます。シンタックスハイライトは、文書の子として自身をインストールしているので

、あなたがfindChild/findChildrenでそれ/それらを取得することができます。

foreach(QSyntaxHighlighter* highlighter, 
     ui->textEdit->findChildren<QSyntaxHighlighter*>()) { 
    delete highlighter; 
} 
+0

まだ動作しませんでした。以前の色はそのままで、同じ文書に書き続けてもSHのルールはそのままです。 – raze

+1

@raze私は私の答えを編集しました。 – alexisdm

+0

Yey、それは魅力のように働いた。どうもありがとうございます! – raze

関連する問題