查看完整版本: [-- 请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件? --]

QTCN开发网 -> Qt基础编程 -> 请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

wangs11678 2017-11-16 15:32

请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件?

请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件?

笑颜 2017-11-16 15:41
#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 2017-11-16 16:04
笑颜:#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,还请指教!感谢!

笑颜 2017-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(),或者直接发送一个信号出来,你可以把这个封装到一个对象里面去,方法多种多样

夜雨触花 2017-11-16 18:23
如果输出的内容是你自己实现的,直接将要qDebug()的数据转换为QString然后调用QTextEdit的setText()显示出来不就行了。如果输出的内容是其他封装库里面实现的,就只能用楼上提到的qInstallMsgHandler了(还有另一个很笨的方法是QProcess获取所有输出内容,不提也罢)。


查看完整版本: [-- 请问怎么将Qt Creator的Application Output输出重定向到界面的QTextEdit控件? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled