Задать вопрос
@pixik

Почему qDebug не работает в остальных вызовах?

Доброго времени!
Почему то qDebug не работает в вызовах после первой строчки основного тела кода.

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    qDebug() << "1 start" ;
    QApplication a(argc, argv);
    qDebug() << "2 start" ;
     MainWindow w;
    qDebug() << "3 start" ;
    w.show();
    return a.exec();
}


В консоль выводится только:
1 start

Вот весь pro файл на данный момент:
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = gui_project
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    myclass.cpp

HEADERS  += mainwindow.h \
    myclass.h

FORMS    += mainwindow.ui


Подскажите пожалуйста, в чем может быть проблема?
Всем спасибо!
  • Вопрос задан
  • 1602 просмотра
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
У меня была та же ситуация. Дополнительно выяснилось, что std::cout ведёт себя аналогично, но при этом вполне работоспособен qWarning().
Помогло решение найденное на одном зарубежном форуме. Успешно сработало в моей инсталляции с qt.io.
Необходимо создать файл ~/.config/QtProject/qtlogging.ini
И да, ОС Ubuntu.
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Спорим, что он заработает если вы его поместите после строчки QApplication a(argc, argv); ?

Я явного объяснения не нашел в документации, но я подозреваю что его работа как-то на эвентлупы завязана и, как следствие, вам нужен эвентлуп (т.е. либо QApplication либо QCoreApplication)
Ответ написан
А с чего вы решили, что не выводится? Запустите консоль, из консоли запустите ваше приложение и убедитесь, что все выводится. Windows, я ведь правильно догадался?
Ответ написан
qDebug в последних версиях gdb перестал работать. Если просто в консоли запустить без дебагера, то будет работать.

https://sourceware.org/bugzilla/show_bug.cgi?id=18164
Ответ написан
@podkyr
Я тоже столкнулся с тем, что вызовы QDebug() были видны только из main.cpp. Моё приложение было с QML и как оказалось, чтобы QDebug работал внутри какого-нибудь класса, надо его зарегистрировать через
engine.rootContext()->setContextProperty( );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы