Название: Лог в GUI-форме Отправлено: Gorthad от Октябрь 06, 2013, 17:35 Здравствуйте!
Я недавно начал программировать на Qt и столкнулся со следующей задачей. Хочу сделать, чтобы в GUI был встроенный QPlainTextEditor, в который будет писаться лог программы, как в консоли. Код: QTextCursor text_cursor = QTextCursor(ui->txtLog->document()); Однако отображается все только после того, как закончит выполняться функция. Как реализовать то, что мне нужно? Пробовал посылать сигналы и ловить слотом, результат тот же. И еще: может быть для этих целей подойдет какой-нибудь другой виджет, а не QPlainTextEditor? Название: Re: Лог в GUI-форме Отправлено: kambala от Октябрь 06, 2013, 18:42 вызывай qApp->processEvents() после text_cursor.insertText(qstr);
Название: Re: Лог в GUI-форме Отправлено: ViTech от Октябрь 06, 2013, 20:01 Да, в простых случаях, когда приложение с одним потоком, необходимо в нужных местах вызывать qApp->processEvents(), чтобы обрабатывались сообщения и обновлялось содержимое окон. QPlainTextEdit вполне нормальный виджет для отображения лога, и есть у него слот appendPlainText(), которого вполне достаточно, чтобы сообщение добавлялось в конец текста (без создания QTextCursor и т.п.).
Название: Re: Лог в GUI-форме Отправлено: Gorthad от Октябрь 06, 2013, 22:15 Большое спасибо!
Заработало! А данный метод я юзаю только потому, что appendPlainText() в конце добавляет параграф... неудобно. С другой стороны, "консоль" не перематывается вниз из-за использования textCursor... Название: Re: Лог в GUI-форме Отправлено: lit-uriy от Октябрь 07, 2013, 19:22 Сигналы и слоты тут самое оно применять.
Из некой "подсистемы" шли сигнал с текстовым сообщением, в классе окна сделай слот, который будет принимать текст и помещать в нужное место QPlainTextEditor |