qdebug重定向到文件就很简单了,度娘一大把,不献丑了。

然后想把qdebug打印到ui的textedit上,却没找到好文章,经过测试特分享。

说白了,因为qdebug定向时用到了全局函数,那么textedit作为一个类的成员,问题就变成了如何在全局函数访问类成员。

废话少说,看代码:#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

MainWindow(QWidget *parent = nullptr);

~MainWindow();

static MainWindow *m_mainWin;

static void setText(QString str);

private:

Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H#include "mainwindow.h"

#include "ui_mainwindow.h"

#include

#include

#include

#include

#include

#include

#include

void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg);

MainWindow *MainWindow::m_mainWin = nullptr;

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

m_mainWin = this;

qInstallMessageHandler(myMsgOutput);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::setText(QString str)

{

m_mainWin->ui->textEdit->append(str);

}

void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)

{

static QMutex mutex;

Q_UNUSED(type);

Q_UNUSED(context);

mutex.lock();

#if 0

QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));

QString mmsg;

switch(type)

{

case QtDebugMsg:

mmsg=QString("%1: Debug:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));

break;

case QtInfoMsg:

mmsg=QString("%1: Info:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));

break;

case QtWarningMsg:

mmsg=QString("%1: Warning:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));

break;

case QtCriticalMsg:

mmsg=QString("%1: Critical:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));

break;

case QtFatalMsg:

mmsg=QString("%1: Fatal:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));

abort();

}

/*QFile file("debug.txt");

file.open(QIODevice::ReadWrite | QIODevice::Append);

QTextStream stream(&file);

stream <

file.flush();

file.close();*/

#endif

MainWindow::setText(msg);

mutex.unlock();

}

最后,在pro加上:DEFINES+=QT_MESSAGELOGCONTEXT

本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

qdebug重定向_qDebug重定向到写入文件以及显示在界面控件上相关推荐

  1. asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...

    FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles ...

  2. 从XML文件读取数据绑定到列表控件2

    ComponentArt.Web.UI控件绑定所用XML,同时用于DropDownList的绑定,XML如下: <SiteMap>   <item Text="标题一&qu ...

  3. 使用 SAP UI5 FileUploader 控件上传本地文件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  4. java保存文件filedialog保存路径 文件名_Winform控件SaveFileDialog用于保存文件

    SaveFileDialog用于保存文件,供大家参考,具体内容如下 1.新建Winform窗体应用程序,命名为SaveFileDialogDemo. 2.在界面上添加一个按钮的控件(用于打开保存文件对 ...

  5. 详述FileUpload 控件上传单文件

    第一步:添加两个Label控件,一个是用于标题显示,一个是用于上传完成消息提示. 第二步:创建一个FileUpload控件到Page页面,注意FileUpload控件本身只提供文件的选举操作,而实际的 ...

  6. Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】...

    本实例将读取拖动到Silverlight的ListBox控件中的txt文件或者Jpg文件.在本实例中将讲如果通过UIelementA.Drop事件获取到拖动到UIelementA上的文件的相关名称以及 ...

  7. 解决FileUpload控件上传大文件被拒问题时

    在使用Asp.Net自带的服务器端控件Fileupload上传文件时,如果上传的文件比较大,可能会遇到服务器的拒绝服务攻击,此时可以通过在<system.web>中添加: <http ...

  8. 实现拖拽上传文件的一款小控件——dropzone

    由于专注所以专业.非常多小巧的东西乍一看非常不起眼,却在特定的领域表现不俗,就是由于集中了热情. dropzone就是这样一款小控件,实现拖拽上传.它不依赖于其他像jquery等JS库.并且支持多方面 ...

  9. active控件读取服务器文件,Delphi下利用ActiveX控件读取PDF文件

    首先,要找到这个控件,安装Acrobat Reader程序也就同时得到了这个控件. 这个控件位于它的 ActiveX 子目录下,名字可能因版本不同而稍有不同.如 3.0 版的名字叫 pdf42.ocx ...

最新文章

  1. 12Boostrap响应式布局
  2. WindowsXP中修改本地路由表
  3. C# 中文件路径的操作
  4. 13行代码AC_Justifying the Conjecture Gym - 102394J(解题报告)
  5. 学完php在学python_写给PHP程序员的 Python学习指南(建议去看原文)
  6. 计组之总线:3、总线操作和定时(同步定时、异步定时、版同步通信、分离式通信)
  7. 电子计算机发展为第五代,电子计算机的发展历程是怎样的?
  8. 解决 webpack-dev-server 不能自动刷新的问题
  9. 使用idea把Svn分支合并到主干上
  10. php ftps,使用PHP Curl的FTPS获得部分下载
  11. 一句口诀记住 OSI七层协议模型
  12. EMD EEMD CEEMD CEEMDAN IEEMDAN 附赠EEMD代码
  13. 云计算实训报告总结_实训报告心得体会(通用5篇)
  14. jQuery 和React
  15. java解析图片GPS等信息,springboot项目获得图片GPS
  16. MySql 高级查询强化学习
  17. 一行代码,将2D转3D图表!
  18. Amazon Shield Advanced 更新 – 自动应用程序层 DDoS 防御
  19. 狼行千里吃肉,马行千里吃草(我读了5遍,震撼了!)
  20. TI推出工业市场最强异构处理器AM57X 双核A15怕不怕

热门文章

  1. python for菜鸟_菜鸟Python学习
  2. 通达信行情数据获取--python_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
  3. 心理测试软件需求分析报告,心理测评软件都适用于哪些人群?具体有哪些功能?【心悦灵】...
  4. angular2 form reset
  5. GitHub:Awesome-Hacking(黑客技能列表-恶意代码)
  6. 水青木华的博客(我的空间我做主)
  7. mysql中如何查询表的第一条和最后一条记录
  8. SML实现图像标注/分类
  9. 使用STM32输出PWM波形实现2个 LED呼吸灯
  10. postgres 数据导入导出