Russian Qt Forum
Сентябрь 30, 2024, 18:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit не хочет пролистываться вниз при добавлении текста  (Прочитано 5435 раз)
sk_alex
Гость
« : Апрель 11, 2007, 18:57 »

Доброго времени суток.

Дано: Qt 3.3.3 + Visual C++ 6. Соответственно, под Windows.
Приложение Dialog-based. На главном окне приложения стоит компонент QTextEdit, выполняющий функции лога. В конструкторе главного окна стоит установка:

LogEdit->setTextFormat (QTextEdit::LogText);

Во время работы программы в это окно скидываются различные диагностические сообщения таким образом:

char tmpStr [log_maxStrLength];
//..........................
LogEdit->append (tmpStr);


Все успешно работает. Когда начинает не хватать размеров компонента, справа появляется скролбар, который при каждом обновлении прокручивается. Однако как только пользователь пытается подергать этот самый скролбар, чтобы посмотреть сообщения, которые уползли вверх, то с этих пор не удается увидеть никакие сообщения, которые добавились в лог после того, как пользователь подергал скролбар. При этом если сделать "Выделить все" -> "Скопировать" и потом выкинуть содержимое буфера в любой текстовый редактор, то все сообщения (включая самые последние, которые не были видны), там будут. То есть, внутрь компонента, насколько я понимаю, все успешно добавляется. Проблемы именно с отображением.

Вопрос. Как это лечить?

Заранее благодарен всем откликнувшимся.

Upd: Изменил название темы. Режим LogText, видимо, тут не при чем.
Записан
Hordi
Гость
« Ответ #1 : Апрель 13, 2007, 12:03 »

Юзай PlainText и не парься, у LogText недостатков больше чем преимуществ...

te_cout = new QTextEdit( Splitter1 );
te_cout->setReadOnly(true);
te_cout->setWordWrap(QTextEdit::WidgetWidth);
te_cout->setTextFormat(Qt::PlainText);
//te_cout->setTextFormat(Qt::LogText);
te_cout->setHScrollBarMode(QScrollView::AlwaysOff);
Записан
sk_alex
Гость
« Ответ #2 : Апрель 16, 2007, 11:29 »

Большое спасибо за совет. Только проблему он не вылечил. Грустный В режиме PlainText имею абсолютно такое же поведение, как и в режиме LogText. Судя по всему, дело тут непосредственно в самом компоненте QTextEdit. Может я где какую настройку забыл поставить?
Записан
Hordi
Гость
« Ответ #3 : Апрель 16, 2007, 13:16 »

По-сути я привел фактически полный кусок кода из рабочей софтины... У меня все работает нормально.
Попробуй аналогичную ситуацию в дизайнере - может с дровами что-то...
Записан
Kosh
Гость
« Ответ #4 : Апрель 18, 2007, 09:46 »

sk_alex, ты хочешь сказать, что даже после того как скроллер в самый низ опустишь, та не видно последних добавлений?
Записан
sk_alex
Гость
« Ответ #5 : Апрель 18, 2007, 12:07 »

Да, именно так. Последний видимый текст - ровно тот, который был до того, как впервые скроллбар потрогали.

добавлено спустя 17 минут:

 
Цитата: "Hordi"
По-сути я привел фактически полный кусок кода из рабочей софтины... У меня все работает нормально.
Попробуй аналогичную ситуацию в дизайнере - может с дровами что-то...


На самом деле штука действительно странная. Ибо в другом проекте (единственное отличие от этого - там компонент QTextEdit в MDI-окошко встроен) у меня тоже он успешно работает. Тут же этот компонет поставлен на диалоговое окно (в дизайнере), а функциональность, соответственно, дописана в классе-потомке от того, который автоматически генерируется по ui-файлу.

У тебя именно версия Qt 3.3.3 и Visual C++ 6? Да, еще. Не знаю, может ли это как-то повлиять - у меня еще в системе установлен Platform SDK 2003 и STLPort 4.6. По идее, SDK я в данном проекте не пользуюсь, но без него почему-то не работает STLPort (выдаются ошибки компиляции с руганью на файл winbase.h из Visual C++). А вот отказаться от STLPort'а никак не могу - в Visual C++ 6 поддержка STL, такое ощущение, что очень древняя.
Записан
Hordi
Гость
« Ответ #6 : Апрель 18, 2007, 13:43 »

На любых версиях все работало нормально, включая 3.3.3, у меня Линукс
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 20.