Qtcreator как перенапривить вывод cout ?, окно "консоль приложения" |
Здравствуйте, гость ( Вход | Регистрация )
Qtcreator как перенапривить вывод cout ?, окно "консоль приложения" |
wiz29 |
30.5.2011, 14:02
Сообщение
#11
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Здесь нет никакого переопределения, если ты перенаправишь вывод с std::cout в qDebug() получишь нужный результат (будешь видеть в консоли qtcreator'а то что выводиться через std::cout). Как я понимаю сама GUI апликуха написана тобой, и есть "чужие" модули, вывод std::cout которых ты хочешь увидеть?
если это так, то тот способ, который использует QDebugStream тебе подойдет. Нужно лишь однажды инициализировать перенапрвление, после создания объекта QApplication в main функции твоего приложения! Больше никаких "телодвижений" делать будет ненужно! все что будет напрявляться в std::cout автоматически попадет в консоль QtCreator'а или консоль MSVC без разницы в каком модуле будет вызван вывод через std::cout Ещё раз подчеркну что считаю переопределние cout в qDebug весьма глупой затеей т.к. в дальнейшем qDebug полбюбому будет использовать что-то аля cout qDebug не будет использовать ничего аля std::cout, в лучшем случае функции C типа printf и тп. я бы не стал заморачиваться |
|
|
flankerr |
30.5.2011, 14:16
Сообщение
#12
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Да, именно, есть не мои модули без Qt вывод которых я хочу видеть у себя в своей апликухе.
Впринципе елси эвариант с перенаправлением в qDebug сработает для не Qt-го модуля меня это устроит. |
|
|
wiz29 |
30.5.2011, 14:18
Сообщение
#13
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Должно сработать, тк std::cout синглтон
|
|
|
flankerr |
30.5.2011, 16:52
Сообщение
#14
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Криво всё это...
вот тестовый код в рамках qt апликухи
Сообщение отредактировал flankerr - 30.5.2011, 16:55 |
|
|
flankerr |
30.5.2011, 17:24
Сообщение
#15
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Вывод из модуля вообще не работает и с flush и без - не работает.
В общем вариант с перенаправлением как и показался вначале - оказался кривым и по сути не рабочим. Сообщение отредактировал flankerr - 30.5.2011, 17:24 |
|
|
Litkevich Yuriy |
30.5.2011, 18:07
Сообщение
#16
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
RazrFalcon |
30.5.2011, 18:28
Сообщение
#17
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Хм, у меня тоже std::cout выводит после завершения. Linux.
|
|
|
wiz29 |
30.5.2011, 18:43
Сообщение
#18
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Да подобный код не работает для библиотек, причина тому в том, что реально в каждом модуле экземпляр std::cout свой.
данная статья возможно поможет тебе написать нужный код. В рамках одного приложения (без участия других модулей, приведенный мной способ железно работает) Хм, у меня тоже std::cout выводит после завершения. Linux. Просто нужно немного модифицировать код wrapper'а, тогда будет выводить сразу. Сообщение отредактировал wiz29 - 30.5.2011, 18:41 |
|
|
flankerr |
31.5.2011, 9:11
Сообщение
#19
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Хм, у меня тоже std::cout выводит после завершения. Linux. Просто нужно немного модифицировать код wrapper'а, тогда будет выводить сразу.Подскажи как ? Ну это если запукать не через QtCreator. А для отладки нужен QtCreator при запуске через который не пашет. |
|
|
flankerr |
31.5.2011, 10:06
Сообщение
#20
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
И всё таки ради консоли такой гемор это просто алес капут....
Кстати, может всё таки подскажет кто зачем в QtCreator есть опция "запускать в терминале". Не оно понятно что запустит якобы через терминал и будет висеть окно консольки но оно вообще не функционально - туда вообще ни чего ни когда не выводиться не одним из извсетных мне способов... Спрашивай на кой оно вообще. |
|
|
Текстовая версия | Сейчас: 29.3.2024, 16:35 |