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.
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?
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: Ссылка
Tags und Links qt syntax-highlighting qml