Программный скроллинг в QTextEdit, Исходя из положения курсора |
Здравствуйте, гость ( Вход | Регистрация )
Программный скроллинг в QTextEdit, Исходя из положения курсора |
QMainWindow |
5.8.2011, 21:28
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
И снова я...
Подскажите, как можно скролить сей виджет программно при изменении позиции курсора? Что имеем: узнаю позицию курсора в тексте через index = textEdit->textCursor.position(). Насколько я понимаю - это универсальная координата, т.к. она не зависит от размеров textEdit. Далее нужно перейти в эту часть текста и отобразить его, начиная с этой координаты. Сам курсор перевожу с помощью setPosition(index). А как скролить сам текст, не знаю. Можно через textEdit->verticalScrollBar()->setValue(), но какое значение подставлять? А определить y координату слова, попавшего под мой индекс тоже не знаю как. Либо можно использовать moveCursor(QTextCursor::NextBlock ......), число блоков знаю, координату курсора в блоке могу извлечь. Но тогда проблема, как узнать номер слова, над которым находится курсор. Было бы все равно, если этот блок текста со 100% вероятностью влезал бы в экран, но такое не всегда не у меня бывает. В общем помогите)) |
|
|
RazrFalcon |
5.8.2011, 21:57
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
?
|
|
|
QMainWindow |
5.8.2011, 22:47
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Там нет такого метода. Он есть только в Q3MultiLineEdit, Q3TextEdit, QLineEdit.
|
|
|
QMainWindow |
6.8.2011, 9:42
Сообщение
#4
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Никто не знает как?
|
|
|
PAFOS |
7.8.2011, 19:01
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
попробуй:
QTextCursor cur = textEdit->textCursor(); textEdit->setTextCursor(cur); тогда если у тебя курсор был в позиции, которая была за пределами видимого пространства, то виджет сам прокрутит до этого курсора. Так же есть методы QRect QTextEdit::cursorRect ( const QTextCursor & cursor ) const returns a rectangle (in viewport coordinates) that includes the cursor. QRect QTextEdit::cursorRect () const returns a rectangle (in viewport coordinates) that includes the cursor of the text edit. а по полученным координатам можно проскролить программно |
|
|
Текстовая версия | Сейчас: 3.1.2025, 3:36 |