Je suis en train de développer un éditeur de texte avec PyQt5 et j'implémente la fonction "Find next ...". L'utilisateur entre la chaîne qu'il veut rechercher. Chaque fois qu'il clique sur le bouton "Chercher ensuite", la prochaine chaîne correspondante sera mise en surbrillance. PyQt5 - Faites défiler jusqu'au curseur de QTextEdit
Je l'ai fait en utilisant QTextEdit.textCursor() comme ceci:
...
textarea = QTextEdit()
cursor = textarea.textCursor()
#This function returns an array: [start index of the matched string, end index of the matched string]
matched_string_indexes = findText(text_to_find, text,...)
#So now I can use setPosition to select the matched string
cursor.setPosition(array[0], QTextEdit.MoveAnchor)
cursor.setPosition(array[1], QTextEdit.KeepAnchor)
#Now that the matched string is seleted I can highlight it
highlightText(cursor)
Le problème est de savoir si la chaîne correspondante est au bas de la page (hors du port de vue), je voulez que la zone de texte défile vers le bas (ou vers le haut) automatiquement. J'ai essayé avec la méthode ensureCursorVisible() de QTextEdit mais cela ne fonctionne pas.
Une solution de force brute consiste à calculer la coordonnée y de la ligne courante en pixels plutôt que d'utiliser la méthode scrollbar.setValue() pour faire défiler jusqu'à cette ligne.
Vous devrez sûrement appeler 'textarea.setTextCursor (cursor)' pour que 'ensureCursorVisible()' fonctionne. – ekhumoro
Cela a fonctionné omg ... J'étais tellement sûr que le curseur renvoyé par la méthode QTextEdit.textCursor() doit être "défini" comme le curseur du textarea. Merci beaucoup. – NewBieBR