Die Hervorhebung von TextEdit ist nicht möglich

8

TL; DR: TextEdit malt hervorgehobenen Text nur, wenn ich darauf klicke. Nichts hilft

Ich habe ein ListView mit einem QAbstractListModel -Modell mit String-Eigenschaften. Diese Zeichenfolgeneigenschaften werden geprüft, und QSyntaxHighlighter wird verwendet, um Rechtschreibfehler anzuzeigen. Ich erstelle QSyntaxHighlighter Nachkomme in Component.onCompleted von TextEdit . Ich habe die Hervorhebung mit korrekten Rechtschreibfehlern überprüft und setFormat() von Highlighter wird mit korrekten Positionen ausgeführt. Das Problem ist, dass es Text nur dann rot zeichnet (ungültig wird), wenn ich auf TextEdit selbst klicke.

TextEdit lebt in Flickable (um den Cursor zu verfolgen) und Flickable lebt in Rectangle (um einen schönen Hintergrund und Rahmen zu haben). Die Bindung an einige Signale und das Aufrufen von update () von TextEdit hilft nicht.

Nachdem die Rechtschreibprüfung abgeschlossen ist, gebe ich rehighlight() signal des erzeugten SyntaxHighlighter aus.

%Vor%

Hier ist ein kleines Beispielprojekt mit einer Demonstration, wie es nicht funktioniert, bis Sie auf einen Text klicken Ссылка

Irgendwelche Ideen, wie ich das lösen kann?

    
Ribtoks 29.11.2015, 11:57
quelle

1 Antwort

0

Das Problem wurde wahrscheinlich durch QTBUG-44765 verursacht, behoben in Qt 5.5.

Angesichts des niedrigen Levels des Fehlers denke ich nicht, dass es praktisch darum geht, es zu umgehen.

Sie können das umgehen, indem Sie eine leere Zeichenfolge an den TextEdit anfügen, wenn Sie die Syntaxhervorhebung

abgeschlossen haben %Vor%

Dabei ist updateTextEdit(indexToUpdate) ein neues Signal, das Ihr itemsModel ausgeben muss.

itemsmodel.h

%Vor%

itemsmodel.cpp

%Vor%

Der vollständige Code ist hier verfügbar: Ссылка

    
Simon Warta 14.02.2016, 01:02
quelle

Tags und Links