После поиска по той причине, что инструкции qDebug() отлично работают с стандартным обработчиком сообщений Qt, но не работают, когда я переключаюсь на свои собственные, я обращаюсь к вам, чтобы узнать, есть ли у кого-либо еще какие-либо проблемы с этой проблемой.
Вещи, которые я знаю о/пытались, которые ничего не делают...
1) CONFIG += console
2) DEFINES -= QT_NO_WARNING_OUTPUT QT_NO_DEBUG_OUTPUT
3) ::fprintf(stderr, "ERROR\n"); ::fflush(stderr);
4) ::fprintf(stdout, "OUTPUT\n"); ::fflush(stdout);
5) std::cerr << "CERROR" << std::endl; std::cerr.flush();
Однако он работает правильно при использовании встроенного обработчика (то есть он печатает сообщение в консоли QtCreator)
int main(int argc, char *argv[]) {
// Use my handler
qInstallMessageHandler(MyCustomLogger);
qDebug() << "Not Printed";
// Use standard handler
qInstallMessageHandler(0);
qDebug() << "Correctly Printed";
// Use my handler again
qInstallMessageHandler(MyCustomLogger);
qDebug() << "Not Printed Again...";
}
Самый последний тест заключался в том, что я выделил себе консоль с помощью команд WinAPI, что приводит к правильному поведению. Все выходные данные для stderr и stdout видны на консоли, которую я создал. Однако это не то поведение, которое я хочу, я хочу, чтобы иметь возможность просматривать этот вывод в QtCreator.
Любые мысли о том, как стандартный обработчик сообщений печатает отладчик? Мне еще не удалось найти его в источниках Qt.