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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Лог в GUI-форме  (Прочитано 2999 раз)
Gorthad
Гость
« : Октябрь 06, 2013, 17:35 »

Здравствуйте!
Я недавно начал программировать на Qt и столкнулся со следующей задачей.
Хочу сделать, чтобы в GUI был встроенный QPlainTextEditor, в который будет писаться лог программы, как в консоли.
Код:
    QTextCursor text_cursor = QTextCursor(ui->txtLog->document());
    text_cursor.movePosition(QTextCursor::End);
    text_cursor.insertText(qstr);

Однако отображается все только после того, как закончит выполняться функция.
Как реализовать то, что мне нужно?
Пробовал посылать сигналы и ловить слотом, результат тот же.

И еще: может быть для этих целей подойдет какой-нибудь другой виджет, а не QPlainTextEditor?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Октябрь 06, 2013, 18:42 »

вызывай qApp->processEvents() после text_cursor.insertText(qstr);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Октябрь 06, 2013, 20:01 »

Да, в простых случаях, когда приложение с одним потоком, необходимо в нужных местах вызывать qApp->processEvents(), чтобы обрабатывались сообщения и обновлялось содержимое окон. QPlainTextEdit вполне нормальный виджет для отображения лога, и есть у него слот appendPlainText(), которого вполне достаточно, чтобы сообщение добавлялось в конец текста (без создания QTextCursor и т.п.).
Записан

Пока сам не сделаешь...
Gorthad
Гость
« Ответ #3 : Октябрь 06, 2013, 22:15 »

Большое спасибо!
Заработало!
А данный метод я юзаю только потому, что appendPlainText() в конце добавляет параграф... неудобно.
С другой стороны, "консоль" не перематывается вниз из-за использования textCursor...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Октябрь 07, 2013, 19:22 »

Сигналы и слоты тут самое оно применять.
Из некой "подсистемы" шли сигнал с текстовым сообщением, в классе окна сделай слот, который будет принимать текст и помещать в нужное место QPlainTextEditor
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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