crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Qtcreator как перенапривить вывод cout ?, окно "консоль приложения"
flankerr
  опции профиля:
сообщение 27.5.2011, 14:04
Сообщение #1


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

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

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




Репутация:   0  


Есть GUI апликуха но для отладки надо сделать чтобы строка std::cout << "test"
приводила к выводу в окно QtCreator "консоль приложения"

ну или как под Windows сделать чтобы создавалась консолька вместе с GUI окном. Через MSVS это делается а вот как это сделать через pro файл не понимаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.5.2011, 14:18
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


#include <QtDebug>

qDebug()<<"test";

Оно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 27.5.2011, 14:24
Сообщение #3


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

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

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




Репутация:   0  


Цитата(RazrFalcon @ 27.5.2011, 15:18) *
#include <QtDebug>qDebug()<<"test";
Оно?

Если пишешь под Qt то можно и так, однако...
У меня есть модули которые с одинаковым успехом используются как в Qt проектах так в проектах без Qt так вот вкрячивать туда два вида вывода через ifdef мягко говор кривовасто, да и утомительно.

Посему в целом хочется более универсальный сопосб без завязки на Qt
т.е. или вывод окна с консолью или перенаправление консольного вывода в QtCreator

Сообщение отредактировал flankerr - 27.5.2011, 14:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.5.2011, 15:03
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


И в правду cout странно работает. Не знаю. Не сталкивался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.5.2011, 19:10
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(flankerr @ 27.5.2011, 17:04) *
как под Windows сделать чтобы создавалась консолька вместе с GUI окном
чтобы появлялась консоль, нужно в pro-файл написать:
GONFIG += console
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 30.5.2011, 10:18
Сообщение #6


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

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 27.5.2011, 20:10) *
Цитата(flankerr @ 27.5.2011, 17:04) *
как под Windows сделать чтобы создавалась консолька вместе с GUI окном
чтобы появлялась консоль, нужно в pro-файл написать:GONFIG += console

Под Windows это НE работает !

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 30.5.2011, 10:25
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


You use it like this:
#include <qdebug.h>

// create your application
QApplication app(argc, argv);

// these redirect both cout/cerr
QDebugStream cout(std::cout);
QDebugStream cerr(std::cerr);

// now start using cout and cerr normally

std::cerr << "Oops"; // this goes to your debugger output

исходник статьи
qdebugstream link

Сообщение отредактировал wiz29 - 30.5.2011, 10:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 30.5.2011, 12:27
Сообщение #8


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

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

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




Репутация:   0  


Цитата(wiz29 @ 30.5.2011, 11:25) *
#include <qdebug.h>
QDebugStream cerr(std::cerr);
std::cerr << "Oops"; // this goes to your debugger output


насколько понял всё это хитрожопо сводиться к qDebug() .
Однако мне надо решить вопрос БЕЗ Qt


Сообщение отредактировал flankerr - 30.5.2011, 12:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 30.5.2011, 13:06
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(flankerr @ 27.5.2011, 15:04) *
Есть GUI апликуха но для отладки надо сделать чтобы строка std::cout << "test"
приводила к выводу в окно QtCreator "консоль приложения"

что конкретно не понятно? сформулируйте тогда конкретно, что нужно сделать. ничего там "хитрожопого" нет.

Цитата(flankerr @ 30.5.2011, 13:27) *
Однако мне надо решить вопрос БЕЗ Qt

С этого момента становится совсем непонятно чего вы хотите.

чтобы просто увидеть что выводится из std::cout в консоли QtCreator , в нужных местах достаточно вызвать std::cout.flush().
опция CONFIG += console работает, если запускать приложение не из под среды QtCreator (нафига создавать 2 консоли).

На мой взгляд, проще перенаправить потоковый вывод в qDebug, чем изобретать велосипед.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 30.5.2011, 13:21
Сообщение #10


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

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

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




Репутация:   0  


А что не понятного...
Есть GUI апликуха реальзованная на Qt нужно получить действие qDebug средствами std::cout \ printf
Пока не получается разобраться в реализации qDebug там же по сути наверняка делатся некое переопределение\перенапрвление

Подчеркну что при работе в MSVS проблем нет. Можно спокойно созадать дополнительное консольное окошко где будт делаться вывод. Тогда как в pro файле НЕ удаёться совместить консольное окно и GUI - одно замещает другое.

Ещё раз подчеркну что считаю переопределние cout в qDebug весьма глупой затеей т.к. в дальнейшем qDebug полбюбому будет использовать что-то аля cout

std::cout.flush() не приводит к какому то видимому результату

И главное! У меня НЕТ возможности использовать Qt!
Апликухха использует модуль (dll) которая написана БЕЗ Qt. Вывод нужно делать в этом модуле. Этот модуль ЕДИНЫЙ для разных апликух влючая те которые написаны БЕЗ Qt.

Ксати, в QtCreator в настройках запусках есть опция "запускать в терминале". при устанвке этой опции запускается консолька - казалось бы вот оно решение - фигас два. Консолька то есть а вот вывод туда не работает, пробывал и qDebug и cout и printf один фиг не выводит туда ничего. Зачем эта консолька не понятно...

Сообщение отредактировал flankerr - 30.5.2011, 13:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 5:01