Ho una forma con una QTextEdit
su di esso, che si chiama translationInput
. Sto cercando di fornire la funzionalità di modifica per l'utente.Spostando il cursore all'interno di QTextEdit
Questo QTextEdit
conterrà testo in formato HTML. Ho un set di pulsanti, come "grassetto", "Corsivo" e così via, che dovrebbe aggiungere i tag corrispondenti nel documento. Se il pulsante viene premuto quando non è selezionato alcun testo, voglio solo inserire una coppia di tag, ad esempio <b></b>
. Se è selezionato un testo, voglio che i tag appaiano a destra ea sinistra.
Questo funziona correttamente. Tuttavia, desidero anche posizionare il cursore prima del tag di chiusura, in modo che l'utente possa continuare a digitare all'interno del tag nuovo aggiunto senza dover riposizionare il cursore manualmente. Per impostazione predefinita, il cursore appare a destra dopo il il testo appena aggiunto (quindi nel mio caso, subito dopo il tag di chiusura).
Ecco il codice che ho per il pulsante Corsivo:
//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText(newText);
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
Tuttavia, l'ultima linea non fa nulla, il cursore non si muove, anche se i rendimenti movePosition()
true
, che significa che tutte le operazioni sono state completate con successo.
Ho anche provato a farlo con QTextCursor::PreviousCharacter
anziché QTextCursor::Left
e ho provato a spostarlo prima e dopo aver riportato lo stato attivo alla modifica, che non modifica nulla.
Quindi la domanda è: come faccio a spostare il cursore all'interno del mio QTextEdit
?
È possibile spostare direttamente il cursore del testo utilizzando 'MoveCursor()': ' ui.translationInput-> MoveCursor (QTextCursor :: sinistra, QTextCursor :: MoveAnchor, 4); ' – iliis
Penso che il commento sopra dovrebbe essere trasformato in una risposta. –