[Не решено]QTextEdit + AutoScroll |
Здравствуйте, гость ( Вход | Регистрация )
[Не решено]QTextEdit + AutoScroll |
Rocky |
1.2.2011, 18:51
Сообщение
#11
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
|
|
|
RazrFalcon |
1.2.2011, 18:58
Сообщение
#12
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
как то так или
Сообщение отредактировал RazrFalcon - 1.2.2011, 19:01 |
|
|
breeve |
1.2.2011, 19:49
Сообщение
#13
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
А QTextEdit::append(...) если вызывать? Если вызвать append(), то курсор он не меняет так как надо, но текст у меня обновляеться целиком, а не добавляеться(новый то он добавляеться но еще и старый обновляеться)), в конец не получится его вставлять. Поэтому нужен setText с курсором как у append'а.
как то так Это я как понимаю ставить курсор в конец Цитата или
А это не работает( Сообщение отредактировал breeve - 1.2.2011, 19:42 |
|
|
RazrFalcon |
1.2.2011, 20:22
Сообщение
#14
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Какой курсор? Это скролбар.
|
|
|
Алексей1153 |
1.2.2011, 22:07
Сообщение
#15
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Есть TextEdit, каждый раз когда вставляю в него текст - он автоматом поднимает скролл вверх. Поскольку вставляю оч. быстро, то я вообще не могу сдвинуть его с начальной позиции. Как убрать автоскролл? а текст всегда меняется или редко ? Если редко, то сделай проверку на равенство устанавливаеого текста и старого - и не загружай, если текст такой же. По крайней мере без нужды дёргаться не будет |
|
|
abc |
1.2.2011, 22:15
Сообщение
#16
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
Если вызвать append(), то курсор он не меняет так как надо, но текст у меня обновляеться целиком, а не добавляеться(новый то он добавляеться но еще и старый обновляеться)), в конец не получится его вставлять. append добавляет текст в конец с новой строки. Не понимаю, что у тебя происходит. Опять же возвратимся к тому, какой вопрос решаем: если хочешь, чтобы скрол показывал конец текста, то аппенд вполне сойдёт. но если не хочешь, чтобы текст добавлялся с новой строки, тогда setText(textedit.text()+новый текст) и поставить курсор в конец текста. Но если всё же хочется "освободить" скролл от домогательств аппенда или сеттекста вообще, то тут нужно постараться) а ведь задача нужная, потому что действительно бывает необходимость - например, в чате посмотреть, что писано выше, а каждое новое сообщение срывает тебя к себе. надо решать) я пытался сделать так: int val=textedit.verticalScrollBar().value(); textedit.append(текст); textedit.verticalScrollBar().setValue(val); если поставить скрол в какое-то положение, то он будет там стоять, но вот с его движением, особенно если текст приходит быстро, проблемы Сообщение отредактировал abc - 1.2.2011, 22:16 |
|
|
abc |
1.2.2011, 23:56
Сообщение
#17
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
хммм, если во время аппендов тыкнуть в текстэдит, то скролл перестаёт перемещаться в конец, остаётся стоять на месте и прекрасно реагирует на пользовательские махинации
|
|
|
breeve |
3.2.2011, 14:11
Сообщение
#18
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
а текст всегда меняется или редко ? Если редко, то сделай проверку на равенство устанавливаеого текста и старого - и не загружай, если текст такой же. По крайней мере без нужды дёргаться не будет Текст меняеться всегда и оч быстро.Цитата(abc) Не понимаю, что у тебя происходит. Насчет append'а - текст он добавляет в конец, но мне так не нужно, мне нужно обновлять текст целиком, значения меняються то в начале текста, то в конце, то в середине, потому и использую setText() а не append(). В скролл в конец текста это на крайний случай, с этим я уже разобрался и понял как делать, мне нужно чтобы пользователь мог скролить. и еще как я понимаю setText() == clear() + append() потомуто и когда вызываешь append() курсор не сбрасываеться, а если очистить то естественно он уйдет в начало. Цитата(abc) хммм, если во время аппендов тыкнуть в текстэдит, то скролл перестаёт перемещаться в конец, остаётся стоять на месте и прекрасно реагирует на пользовательские махинации Это в каком случае? На текстЕдит не тыкал.
|
|
|
breeve |
3.2.2011, 15:13
Сообщение
#19
|
Участник Группа: Участник Сообщений: 188 Регистрация: 26.12.2009 Пользователь №: 1336 Спасибо сказали: 9 раз(а) Репутация: 1 |
Цитата int val=textedit.verticalScrollBar().value(); textedit.setText(текст); textedit.verticalScrollBar().setValue(val); Сделал так - отлично передвигать можно. Но не за сам ползунок, а только нажимая на стрелочки и ниже или выше ползунка. Сообщение отредактировал breeve - 3.2.2011, 15:13 |
|
|
abc |
4.2.2011, 15:33
Сообщение
#20
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
Это в каком случае? На текстЕдит не тыкал. тыкни курсор остаётся стоять там, где тыкнули, и скролл больше не рвётся в конец, но работает только в случае append, с сеттекстом не катит, потому что да, тот очищает. Если бы тебе подошёл аппенд, я бы предложил после первого аппенда установить курсор программно, например, в начало: TextEdit->moveCursor(QTextCursor::Start); Получаем, что хотели - ползунок наш) Ну, а с сеттекстом, думаю, нужно наследовать QScrollBar, менять его виртуальные функции и устанавливать текстэдиту этот свой скроллбар. Такие мысли Сделал так - отлично передвигать можно. Но не за сам ползунок, а только нажимая на стрелочки и ниже или выше ползунка. да, потому что изменения value происходят моментально. А, когда тянешь за скролл, его value не меняется, а меняется, только когда отпускаешь. А текст приходит и меняет его раньше, чем мы отпускаем, вот и не выходит нам улыбки А, может, всё не так |
|
|
Текстовая версия | Сейчас: 29.11.2024, 16:55 |