qdebug重定向_qDebug重定向到写入文件以及显示在界面控件上
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重定向到写入文件以及显示在界面控件上相关推荐
- asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...
FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles ...
- 从XML文件读取数据绑定到列表控件2
ComponentArt.Web.UI控件绑定所用XML,同时用于DropDownList的绑定,XML如下: <SiteMap> <item Text="标题一&qu ...
- 使用 SAP UI5 FileUploader 控件上传本地文件试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- java保存文件filedialog保存路径 文件名_Winform控件SaveFileDialog用于保存文件
SaveFileDialog用于保存文件,供大家参考,具体内容如下 1.新建Winform窗体应用程序,命名为SaveFileDialogDemo. 2.在界面上添加一个按钮的控件(用于打开保存文件对 ...
- 详述FileUpload 控件上传单文件
第一步:添加两个Label控件,一个是用于标题显示,一个是用于上传完成消息提示. 第二步:创建一个FileUpload控件到Page页面,注意FileUpload控件本身只提供文件的选举操作,而实际的 ...
- Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】...
本实例将读取拖动到Silverlight的ListBox控件中的txt文件或者Jpg文件.在本实例中将讲如果通过UIelementA.Drop事件获取到拖动到UIelementA上的文件的相关名称以及 ...
- 解决FileUpload控件上传大文件被拒问题时
在使用Asp.Net自带的服务器端控件Fileupload上传文件时,如果上传的文件比较大,可能会遇到服务器的拒绝服务攻击,此时可以通过在<system.web>中添加: <http ...
- 实现拖拽上传文件的一款小控件——dropzone
由于专注所以专业.非常多小巧的东西乍一看非常不起眼,却在特定的领域表现不俗,就是由于集中了热情. dropzone就是这样一款小控件,实现拖拽上传.它不依赖于其他像jquery等JS库.并且支持多方面 ...
- active控件读取服务器文件,Delphi下利用ActiveX控件读取PDF文件
首先,要找到这个控件,安装Acrobat Reader程序也就同时得到了这个控件. 这个控件位于它的 ActiveX 子目录下,名字可能因版本不同而稍有不同.如 3.0 版的名字叫 pdf42.ocx ...
最新文章
- 12Boostrap响应式布局
- WindowsXP中修改本地路由表
- C# 中文件路径的操作
- 13行代码AC_Justifying the Conjecture Gym - 102394J(解题报告)
- 学完php在学python_写给PHP程序员的 Python学习指南(建议去看原文)
- 计组之总线:3、总线操作和定时(同步定时、异步定时、版同步通信、分离式通信)
- 电子计算机发展为第五代,电子计算机的发展历程是怎样的?
- 解决 webpack-dev-server 不能自动刷新的问题
- 使用idea把Svn分支合并到主干上
- php ftps,使用PHP Curl的FTPS获得部分下载
- 一句口诀记住 OSI七层协议模型
- EMD EEMD CEEMD CEEMDAN IEEMDAN 附赠EEMD代码
- 云计算实训报告总结_实训报告心得体会(通用5篇)
- jQuery 和React
- java解析图片GPS等信息,springboot项目获得图片GPS
- MySql 高级查询强化学习
- 一行代码,将2D转3D图表!
- Amazon Shield Advanced 更新 – 自动应用程序层 DDoS 防御
- 狼行千里吃肉,马行千里吃草(我读了5遍,震撼了!)
- TI推出工业市场最强异构处理器AM57X 双核A15怕不怕
热门文章
- python for菜鸟_菜鸟Python学习
- 通达信行情数据获取--python_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
- 心理测试软件需求分析报告,心理测评软件都适用于哪些人群?具体有哪些功能?【心悦灵】...
- angular2 form reset
- GitHub:Awesome-Hacking(黑客技能列表-恶意代码)
- 水青木华的博客(我的空间我做主)
- mysql中如何查询表的第一条和最后一条记录
- SML实现图像标注/分类
- 使用STM32输出PWM波形实现2个 LED呼吸灯
- postgres 数据导入导出