crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> 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

Цитата(flankerr @ 30.5.2011, 14:21) *
Ещё раз подчеркну что считаю переопределние 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 апликухи
void foo();
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
   QDebugStream qdsOut(std::cout);
   QDebugStream qdsErr(std::cerr);

   std::cout << "Этот текст выводит сразу";
   foo();
}

foo()
{
     std::cout << "Этот текст выведется только после закрытия приложения и разумеется полсе вывода qDebug" << std::flush;
    std::cout.flush();
    qDebug()<< "вывод qDebug"; //эта строка напечатается раньше чем предыдущая
}


Сообщение отредактировал 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  


Цитата(flankerr @ 30.5.2011, 13:18) *
Под Windows это НE работает !
а у меня работает ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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 свой.
данная статья возможно поможет тебе написать нужный код. В рамках одного приложения (без участия других модулей, приведенный мной способ железно работает)

Цитата(RazrFalcon @ 30.5.2011, 19:28) *
Хм, у меня тоже std::cout выводит после завершения. Linux.

Просто нужно немного модифицировать код wrapper'а, тогда будет выводить сразу.

Сообщение отредактировал wiz29 - 30.5.2011, 18:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 31.5.2011, 9:11
Сообщение #19


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(wiz29 @ 30.5.2011, 19:43) *
Цитата(RazrFalcon @ 30.5.2011, 19:28) *
Хм, у меня тоже std::cout выводит после завершения. Linux.
Просто нужно немного модифицировать код wrapper'а, тогда будет выводить сразу.

Подскажи как ? :rolleyes:


Цитата(Litkevich Yuriy @ 30.5.2011, 19:07) *
Цитата(flankerr @ 30.5.2011, 13:18) *
Под Windows это НE работает !
а у меня работает ;)
Ну это если запукать не через QtCreator. А для отладки нужен QtCreator при запуске через который не пашет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 31.5.2011, 10:06
Сообщение #20


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


И всё таки ради консоли такой гемор это просто алес капут....

Кстати, может всё таки подскажет кто зачем в QtCreator есть опция "запускать в терминале". Не оно понятно что запустит якобы через терминал и будет висеть окно консольки но оно вообще не функционально - туда вообще ни чего ни когда не выводиться не одним из извсетных мне способов... Спрашивай на кой оно вообще.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 16:35