crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Программный скроллинг в 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  


setCursorPosition(10);
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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.


а по полученным координатам можно проскролить программно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.1.2025, 3:36