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ソースでそれを見つけることができませんでした。