到目前为止,我使用 qDebug().noquote()
输出所有内容.这很容易,因为它只需要一个简单的 #import <QDebug>
现在我需要将所有内容输出到 stdout
,但我不知道如何轻松地做到这一点。这是我被教导的方式:
QTextStream cout(stdout, QIODevice::WriteOnly);
但是,创建一个新对象比简单的 #import <QDebug>
要麻烦一点。 .什么是好的/最不麻烦的处理方式stdout
在 qt 中?
最佳答案
qDebug()
、qInfo()
等都通过管道传输到默认消息处理程序。但是您可以轻松地安装自己的,将调试字符串写入不同的流、文件或任何东西。您需要做的就是定义一个消息处理函数并使用 qInstallMessageHandler() 安装它。 .
综合起来,这是一个完整的例子:
#include <QDebug>
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QTextStream cout(stdout, QIODevice::WriteOnly);
cout << msg << endl;
}
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);
qDebug().noquote() << "Hello world!";
}
关于c++ - 在 Qt : Can I output to `stdout` , 中,我可以使用 qDebug() 输出到 `stderr` 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881940/