TL; DR: TextEdit
dipinge il testo evidenziato solo quando si fa clic su di esso. Nulla aiutaImpossibile evidenziare l'elaborazione su TextEdit
Ho un ListView
con un modello QAbstractListModel
con proprietà di stringa. Queste proprietà delle stringhe vengono sottoposte a controllo ortografico e QSyntaxHighlighter
viene utilizzato per mostrare gli errori ortografici. Creo il discendente QSyntaxHighlighter
in Component.onCompleted
di TextEdit
. Ho ricontrollato l'evidenziazione di ottenere eseguito con errori ortografici corretti e setFormat()
di Evidenziatore viene eseguito con le posizioni corrette. Il problema è che disegna il testo in rosso (invalida) solo quando clicco sullo TextEdit
stesso.
TextEdit
vive in un (cursore traccia) Flickable
e Flickable
vive in un Rectangle
(per avere bel sfondo e il bordo). Il collegamento ad alcuni segnali e il richiamo dell'aggiornamento() di TextEdit
non sono di aiuto.
Dopo il controllo ortografico, emetto il segnale rehighlight()
di SyntaxHighlighter creato.
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)
}
}
}
Ecco un piccolo esempio di progetto con dimostrazione di come non funziona fino a quando si fa clic su un testo https://bitbucket.org/ribtoks/rehighlighdemo/src
Tutte le idee come posso risolvere questo problema?
ho costruito ed eseguito la vostra fonte, ma il programma funziona come vi aspettavate. le parole vengono evidenziate subito dopo aver fatto clic sul pulsante di controllo ortografico. Ho usato Qt 5.5.1 su OSX – DenimPowell
Tutto funziona come previsto, prova a ricostruire il progetto con make disclean && qmake && make ' – swex
Non funziona per Qt 5.4 di sicuro. Con o senza pulizia e qmaking. Potrebbe funzionare su 5.5.1. Ma ho bisogno di mantenere una compatibilità nel mio prodotto fino a Qt 5.2, che avrebbe bisogno di alcuni hack e 5.4 – Ribtoks