标题:请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件?
作者:wangs11678
日期:2017-11-16 15:32
内容:
请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件?
#1 [笑颜 11-16 15:41]
#include
#include
#include
void myMessageOutput(QtMsgType type, const char *msg)
{
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s\n", msg);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s\n", msg);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s\n", msg);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s\n", msg);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
// 这个可行
#2 回 笑颜 的帖子 [wangs11678 11-16 16:04]
笑颜:#include
#include
#include
void myMessageOutput(QtMsgType type, const char *msg)
....... (2017-11-16 15:41)
这样debug信息还是输出到application output啊...我想要的是debug信息输出到控件ui->edit怎么处理?本人刚接触qt,还请指教!感谢!
#3 回 wangs11678 的帖子 [笑颜 11-16 16:31]
wangs11678:这样debug信息还是输出到application output啊...我想要的是debug信息输出到控件ui->edit怎么处理?本人刚接触qt,还请指教!感谢! (2017-11-16 16:04)
你不会把函数实现改了? 比如fprintf(stderr, "Debug: %s\n", msg); 改成ui.edit.append(),或者直接发送一个信号出来,你可以把这个封装到一个对象里面去,方法多种多样
#4 [夜雨触花 11-16 18:23]
如果输出的内容是你自己实现的,直接将要qDebug()的数据转换为QString然后调用QTextEdit的setText()显示出来不就行了。如果输出的内容是其他封装库里面实现的,就只能用楼上提到的qInstallMsgHandler了(还有另一个很笨的方法是QProcess获取所有输出内容,不提也罢)。