QT实现类似qDebug()打印输出之mDebug()

本文介绍了如何在QT环境下实现一个名为mDebug()的自定义打印工具,用于在嵌入式工业相机软件中替代qDebug(),将数据实时打印到指定窗口,提高现场测试效率。mDebug()通过重载<<运算符支持多种数据类型,包括QT和OpenCV的基本数据类型。文章详细讲解了mDebug()的实现过程,包括类的声明、静态成员初始化、重载函数的实现,并给出了使用示例。
摘要由CSDN通过智能技术生成

需求简介:由于做的是嵌入式工业相机,我们的软件运行在linux上,每次测试软件时,需要查看测试数据时只能写日志或者通过串口打印到PC。当在现场使用时没有电脑想看程序时时运行的数据就做不到,唯一的办法就是写日志,然后把日志拷贝出来拿到电脑上查看,这样一来非常浪费时间,也不能在设备上看时时的测试数据。基于此自己写了这个类似与qDebug()打印信息的工具mDebug(),把数据打印到自己指定的窗口,这样就解决了问题,提高了现场的测试效率,程序运行界面如下所示:

这个界面做的很类似ubuntu的终端界面。mDebug()的实现原理主要是使用了C++的重载功能,对不同的数据类型都重载了<<运算符,使mDebug()可以打印指定的数据类型,为了方便使用mDebug()能打印的数据类型几乎包含了QT的所有基本数据类和opencv的所有基本数据类型。之所以也要支持打印opencv的数据类,是因为我们工业相机是基于opencv这个开源库实现的。下面介绍mDebug()的实现。

创建一个MyDebug类(MyDebug.h 和 MyDebug.cpp)

第一:MyDebug.h文件内容介如下。

//引入opencv库
#include <unistd.h>
#include <cv.h>

//引入QT类
#include <QTextEdit>
#include <QDateTime>
#include <QFile>

using namespace cv;
using namespace std;

//宏 返回MyDebug对象
#define mDebug() MyDebug::myDebug()

//做类前置声明
class QPoint;
class QPointF;
class QRect;
class QRectF;
class CvPoint;
class CvPoint2D32f;
class MyDebugDlg;
class QTextEdit;

1.1、在MyDebug类中对想要打印的数据类型进行 <<运算符重载,所有要重载的数据类型如下。

 //重载 << 运算符
    MyDebug& operator<<(const QString &sMsg);              //重载 << 运算符 打印QString
    MyDebug& operator<<(const String &sMsg);               //重载 << 运算符 打印String
    MyDebug& operator<<(const bool &sMsg);                 //重载 << 运算符 打印bool
    MyDebug& operator<<(const char &sMsg);                 //重载 << 运算符 打印char
    MyDebug& operator<<(const signed short &sMsg);        //重载 << 运算符 打印short
    MyDebug& operator<<(const unsigned short &sMsg);      //重载 << 运算符 打印un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark-puls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值