• 5249阅读
  • 4回复

[提问]请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件? [复制链接]

上一主题 下一主题
离线wangs11678
 

只看楼主 倒序阅读 楼主  发表于: 2017-11-16
请问怎么将Qt Creator的Application Output输出重定向到界面QTextEdit控件?
离线笑颜

只看该作者 1楼 发表于: 2017-11-16
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>

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();
}

// 这个可行
离线wangs11678

只看该作者 2楼 发表于: 2017-11-16
回 笑颜 的帖子
笑颜:#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>
void myMessageOutput(QtMsgType type, const char *msg)
....... (2017-11-16 15:41) 

这样debug信息还是输出到application output啊...我想要的是debug信息输出到控件ui->edit怎么处理?本人刚接触qt,还请指教!感谢!
离线笑颜

只看该作者 3楼 发表于: 2017-11-16
回 wangs11678 的帖子
wangs11678:这样debug信息还是输出到application output啊...我想要的是debug信息输出到控件ui->edit怎么处理?本人刚接触qt,还请指教!感谢! (2017-11-16 16:04)

你不会把函数实现改了? 比如fprintf(stderr, "Debug: %s\n", msg); 改成ui.edit.append(),或者直接发送一个信号出来,你可以把这个封装到一个对象里面去,方法多种多样
离线夜雨触花

只看该作者 4楼 发表于: 2017-11-16
如果输出的内容是你自己实现的,直接将要qDebug()的数据转换为QString然后调用QTextEdit的setText()显示出来不就行了。如果输出的内容是其他封装库里面实现的,就只能用楼上提到的qInstallMsgHandler了(还有另一个很笨的方法是QProcess获取所有输出内容,不提也罢)。
快速回复
限100 字节
 
上一个 下一个