crossplatform.ru

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

> [Не решено]QTextEdit + AutoScroll
breeve
  опции профиля:
сообщение 1.2.2011, 14:35
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Есть TextEdit, каждый раз когда вставляю в него текст - он автоматом поднимает скролл вверх. Поскольку вставляю оч. быстро, то я вообще не могу сдвинуть его с начальной позиции. Как убрать автоскролл?

Сообщение отредактировал breeve - 1.2.2011, 17:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
Rocky
  опции профиля:
сообщение 1.2.2011, 14:59
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Не пробовал, но попробуй с курсором поиграться. Передвигать его в самый конец... Что-то типа
QTextEdit::textCursor(..)
QTextCursor::setPosition(...)
QTextEdit::setTextCursor(..)

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 1.2.2011, 15:04
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


убрать скрол вообще? заставить скрол принимать какое-то нужное положение? убрать можно прям в дизайнере на вкладке текстэдита "qabstractscrollarea". Но скорее нужно управлять его положением, иначе зачем вообще текстэдит, в общем, объясни)

курсор в конец:
ui->textEdit->moveCursor(QTextCursor::End);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 1.2.2011, 15:14
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(abc @ 1.2.2011, 15:02) *
убрать скрол вообще? заставить скрол принимать какое-то нужное положение? убрать можно прям в дизайнере на вкладке текстэдита "qabstractscrollarea". Но скорее нужно управлять его положением, иначе зачем вообще текстэдит, в общем, объясни)

Да нужно управлять его положением, нужно сделать так чтобы во время заполнения этого текстЕдита скролл был подвижен, у меня же он всегда вверху, чуть сдвину, он опять вверх. Я думаю что может есть где-то флаг который отвечает за передвижение скролла. Можно конечно считывать на сколько я передвинул, затем при возврате на начальную позицию уже программно передвигать на то место куда передвинуля в прош. раз с помощью мыши.

Ну или хотя бы как сделать чтобы он авто скроллил, не вверх а вниз. т.е всегда смотрел на последнюю строку.


Скролл в конец на тот случай если по другому не получиться.
Если сформулировать попроще, как сделать так чтобы программно курсор не менял своего положения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 1.2.2011, 15:22
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


я так понимаю, что курсор в конец решает проблему, а вообще управлять скролом можно и так:
textedit->verticalScrollBar()->setValue(значение)
а ещё у qwidget есть метод scroll(x,y) - не знаю, что он делает, но вдруг тоже хорошие дела)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 1.2.2011, 15:54
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(abc @ 1.2.2011, 15:22) *
я так понимаю, что курсор в конец решает проблему, а вообще управлять скролом можно и так:
textedit->verticalScrollBar()->setValue(значение)
а ещё у qwidget есть метод scroll(x,y) - не знаю, что он делает, но вдруг тоже хорошие дела)

Курсор в конец как раз таки не решает проблему. Нужно чтобы можно было двигать скролл, во время заполнения текстЕдита.
Для наглядности продемонстрирую видео, и код.
Устанавливаю текст в двух местах больше Едит не трогаю.
code
Конструктор:
{
         ...
     info = new QTextEdit;
     vLay->addWidget(info);
     setLayout(vLay);
     info->setText(str);
     Функция();
}
Функция:
{
     qApp->processEvents(QEventLoop:AllEvents);
     foreach(.., ..)
     {
          str += "..";
     }
     info->setText(str);
}
    
}
Мне кажется в объявлении функции setText() после вставки текста, он скроллит вверх.
Если так так то получается убрать это никак?

Сообщение отредактировал breeve - 1.2.2011, 15:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 1.2.2011, 16:28
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


видео на работе хрен скачаешь, но вроде понял - ты хочешь, чтобы при вставке текста скрол на это не реагировал, а позволял пользователю собой управлять? надо же как я неверно понял первое сообщение :) подумаю
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 1.2.2011, 16:31
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(abc @ 1.2.2011, 16:28) *
tы хочешь, чтобы при вставке текста скрол на это не реагировал, а позволял пользователю собой управлять?
Именно так.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 1.2.2011, 17:34
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Попробуй так:

Перед вставкой текста сохрани курсор, затем вставь текст и верни курсор)

QTextCursor cursor = textEdit->textCursor();
textEdit->insertHtml("<p>....");
textEdit->setCursorTextCursor(cursor);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 1.2.2011, 18:04
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(PAFOS @ 1.2.2011, 17:34) *
Попробуй так:

Перед вставкой текста сохрани курсор, затем вставь текст и верни курсор)

QTextCursor cursor = textEdit->textCursor();
textEdit->insertHtml("<p>....");
textEdit->setCursorTextCursor(cursor);


Сделал получилось тоже самое что и textEdit->moveCursor(QTextCursor::End)

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

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


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




RSS Текстовая версия Сейчас: 26.11.2024, 2:29