TL; DR: TextEdit
malt hervorgehobenen Text nur, wenn ich darauf klicke. Nichts hilftDie Hervorhebung von TextEdit funktioniert nicht
Ich habe eine ListView
mit einem QAbstractListModel
Modell mit String-Eigenschaften. Diese Zeichenfolgeneigenschaften werden geprüft, und QSyntaxHighlighter
wird verwendet, um Rechtschreibfehler anzuzeigen. Ich erstelle QSyntaxHighlighter
Nachkommen in Component.onCompleted
von TextEdit
. Ich habe die Hervorhebung mit korrekten Rechtschreibfehlern überprüft und setFormat()
von Highlighter mit korrekten Positionen ausgeführt. Das Problem ist, dass es Text in rot (ungültig) zeichnet, nur wenn ich auf die TextEdit
selbst klicke.
TextEdit
Leben in einer Flickable
(Cursor zu verfolgen) und Flickable
Leben in einem Rectangle
(schönen Hintergrund und Grenze zu haben). Die Bindung an einige Signale und das Aufrufen von update() von TextEdit
hilft nicht.
Nachdem die Rechtschreibprüfung abgeschlossen ist, gebe ich das Signal rehighlight()
des erstellten SyntaxHighlighter aus.
Rectangle {
id: descriptionRect
height: 30
border.width: descriptionTextInput.activeFocus ? 1 : 0
clip: true
Flickable {
id: descriptionFlick
contentWidth: descriptionTextInput.paintedWidth
contentHeight: descriptionTextInput.paintedHeight
anchors.fill: parent
interactive: false
flickableDirection: Flickable.HorizontalFlick
height: 30
clip: true
focus: false
function ensureVisible(r) {
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
}
TextEdit {
id: descriptionTextInput
width: descriptionFlick.width
height: descriptionFlick.height
text: description
onTextChanged: model.editdescription = text
Component.onCompleted: {
globalModel.initDescriptionHighlighting(index, descriptionTextInput.textDocument)
}
onCursorRectangleChanged: descriptionFlick.ensureVisible(cursorRectangle)
}
}
}
Hier ist eine kleine Auswahl von Projekt mit Demonstration, wie es bis auf einen Text https://bitbucket.org/ribtoks/rehighlighdemo/src
Irgendwelche Ideen nicht funktioniert klicken, wie ich dieses Problem lösen kann?
I gebaut und Ihre Quelle ausgeführt, sondern das Programm funktioniert wie erwartet. Die Wörter werden markiert, nachdem ich die Rechtschreibprüfung angeklickt habe. Ich benutzte Qt 5.5.1 auf OSX – DenimPowell
Alles funktioniert wie Sie es erwartet, versuchen Sie, Projekt mit make disclean && qmake & & make make ' – swex
Es funktioniert nicht für Qt 5.4 sicher. Mit oder ohne Reinigung und qmaking. Es kann an 5.5.1 arbeiten. Aber ich muss eine Kompatibilität in meinem Produkt bis zu Qt 5.2 behalten, die etwas Hack sowie 5.4 – Ribtoks