Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: sk_alex от Апрель 11, 2007, 18:57



Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: 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, видимо, тут не при чем.


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: Hordi от Апрель 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);


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: sk_alex от Апрель 16, 2007, 11:29
Большое спасибо за совет. Только проблему он не вылечил. :( В режиме PlainText имею абсолютно такое же поведение, как и в режиме LogText. Судя по всему, дело тут непосредственно в самом компоненте QTextEdit. Может я где какую настройку забыл поставить?


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: Hordi от Апрель 16, 2007, 13:16
По-сути я привел фактически полный кусок кода из рабочей софтины... У меня все работает нормально.
Попробуй аналогичную ситуацию в дизайнере - может с дровами что-то...


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: Kosh от Апрель 18, 2007, 09:46
sk_alex, ты хочешь сказать, что даже после того как скроллер в самый низ опустишь, та не видно последних добавлений?


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: sk_alex от Апрель 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, такое ощущение, что очень древняя.


Название: QTextEdit не хочет пролистываться вниз при добавлении текста
Отправлено: Hordi от Апрель 18, 2007, 13:43
На любых версиях все работало нормально, включая 3.3.3, у меня Линукс