Seite 1 von 1

QSyntaxHighlighter Benutzung

Verfasst: 15. Juni 2008 22:04
von pfid
Ich wollte für eine Textsuche den QSyntaxHighlighter benutzen, um gefunden Stichwörter im Text hervorzuheben. Vom Prinzip her ist es klar wie ich es implementieren würde, nur weiß ich nicht wie ich den Highlighter ausschalten kann.

Ist es möglich, den Highlighter einfach abzuschalten ohne das Objekt zu löschen?
Und wäre es möglich, über einen einfachen Setter den Such-String an den Highlighter zu übergeben, so dass das betreffende Wort bzw. andere Wörter hervorgehoben werden?
Oder sollte man da lieber nicht den Highlighter verwenden, sondern irgendwas in Richtung

while (textEdit->find(foo)) cur.setFormat()

?

Verfasst: 16. Juni 2008 09:03
von upsala
Entweder Highligher löschen oder ihm per Flag mitteilen...

Ansonsten, wenn man mal nach dem QtScriptDebugger sucht. Der hat ein schönes Beispiel dabei, was man mit dem Highlighter noch alles anstellen kann...

Verfasst: 16. Juni 2008 09:56
von pfid
Habs jetzt per Flag geregelt. Funktioniert auch alles wie es soll. Dachte nur es wäre vllt ungeschickt, dass trotzdem immer highlighBlock() aufgerufen wird. Passiert dann ja während dem Tippen ständig. Aber so schlimm ist es wohl nicht.

Verfasst: 27. Juni 2008 09:51
von pfid
Wie ist das denn mit dem Ändern des verwendeten QTextEdits? Zum ein/ausschalten nutze im mittlerweile setDocument(0) bzw. setDocument(textEdit->document()), und das funktioniert prima.

Was nicht funktioniert, ist nach dem erstellen des Highlighters das QTextEdit zu wechseln. Für 3 QTextEdit Objekte (die in meinem Fall in einem QTabWidget untergebracht sind) brauche ich daher auch 3 Highlighter-Objekte. Geht das nicht anders?

Verfasst: 27. Juni 2008 12:15
von upsala
Nein, tut es nicht, wobei ein Highlighter normalerweise Speichermäßig nicht allzu groß sein sollte...