在搜索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...";
}
Run Code Online (Sandbox Code Playgroud)
最近的测试是使用WinAPI命令为自己分配一个控制台,这导致正确的行为,所有输出到stderr和stdout在我创建的控制台上都可见.但是,这不是我想要的行为,我希望能够在QtCreator中查看此输出.
有关标准消息处理程序如何打印到调试器的任何想法?我还没有在Qt资源中找到它.