| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Cout в QTGui приложениях |
| Автор: nighthare 16.10.2009, 19:30 | ||
| Доброго вам сремени суток! Столкнулся с таким не пониманием QT, прошу вашей помощи! Суть - я запускаю QWidget - и в процессе запуска хочу что-то для себя вывести на консоль, например std::cout или printf(); Но после запуска приложения на консоли ничего нет, и скидывается в нее текст только после того как я нажму на крестик на окне. Вопрос почему - в консоли сразу не появляется текст? и как сделать так чтобы он появлялся? Методом тыком, обнаружил - что если использовать qDebug("Some text") - то такой текст в консоли появляется тут же.. В чем загвоздка с std::cout ? И второй вопрос, возможно это как-то связано - если раскоментировать в классе - QuickPlot Q_OBJEC, то программа падает с такой ошибкой - :-1: error: collect2: ld returned 1 exit status
|
| Автор: SABROG 16.10.2009, 21:17 | ||
Да уж, жестокое сочетание. Создание QWidget'а в главном потоке и последующее его использование из дочернего потока... Ничего хорошего из этого не выйдет. Может не flush'ит? Такое тоже работает:
|
| Автор: destrd 22.10.2009, 21:42 |
| Как собираете то? Если qmake то надо добавить опцию CONFIG += console |
| Автор: nighthare 26.10.2009, 17:23 | ||||||
С такой опцией виджет не работает, окно не показывается на экран.
Это я тоже понял. Просто идея - что из главного потока можно было бы вызвать по сути несколько независимых окон.. Каждое из которых принялось бы что-то делать, например обсчитывать что-то и тут же отображать на экране. (И для этого тоже нужно чтобы было несколько потоков у одного окна, например для распараллеливания..) При этом всю дебагерную информацию - хочу кидать в консоль. (Задача придуманная, академическая. Просто хочется понять как такое можно быстро и красиво решить на QT)
А это лечится? |
| Автор: SABROG 26.10.2009, 17:37 | ||
Можно попробовать полечить так:
|