在项目的开发中,当我们调试程序时,最常用的就是打印信息了,Qt为我们提供了非常方便的打印信息类QDebug。

大家应该已经很熟练的使用QDebug了,但也许有些地方并没有注意到,下面小豆君就介绍一下QDebug的一些常用特性。

1 qDebug()的最常用法

我们可以使用qDebug像使用std::cout一样,直接在重定向操作符(<

如:

qDebug() << "Hello" << 123;

qDebug()还可以打印Qt中的基本类型,例如QString,QByteArray,QDate,QRectF,QVariantHash,QFont等等,关于Qt中的基本类型,大家可以在帮助文档中搜索关键字QMetaType,这里就不列了。

如:

qDebug() << QString("Hello") << QPoint(10, 10);

以上的用法都必须包含头文件QDebug

#include

2 不包含头文件,直接使用qDebug()

一般的,每次我们使用qDebug()<

#include int main(int argc, char *argv[])

{

int num = 20;

char str[20]="hello world";

qDebug("如果只写在括号里,是不需要QDebug头文件的 %d %s", num, str);

}

实际qDebug是包含在qlongging.h中的,因为我们的Qt程序,一般都会包含QObject,所以这里的头文件包含了QObject,从而我们就不必要额外的再添加QDebug头文件。

以上对于只打印字符串等一些临时性的基本类型信息时,使用这种方法是非常有效的,但是,要记住Qt所支持的基本类型是不可以打印的。

3 为自定义类添加qDebug()打印

如果我们想要使用qDebug打印自定义类中的信息时就可以像以下这样做:

#include classStudent

{

public:

Student(const QString& nm){name = nm;}

QString getName() const{return name;}

private:

QString name;

};

QDebug operator<

{

debug << c.getName();

return debug;

}

int main(int argc, char *argv[])

{

Student student("John");

qDebug() << student;

}

首先,自定义了一个类Student,编写了构造函数和获取姓名的获取器。

其次,定义了"<

最后,在main函数中创建Student的实例,并用qDebug()打印该实例。

4 消除qDebug()打印

qDebug的打印信息,主要是为了方便调试程序时尽快找到bug,所以当我们在发布版本时,需要去掉debug打印,一方面可以加快我们程序的执行速度,另一方面可以减小我们程序的体积。

在我做的项目中有很多人是采用加注释的方法来去掉打印的,虽然这个方法可行,但不是很有效的,如果哪天程序出了bug还需要再把打印信息去掉注释,这是很麻烦的。当然,将日志分级也是个很不错的想法。

为了解决这个问题,你只需要在你的pro文件里加上一行预定义宏即可。

DEFINES += QT_NO_DEBUG_OUTPUT

在你的程序添加上这个宏,重新编译运行程序,看看你的打印信息是不是都不见了呢,哈哈,这是不是很方便啊,Qt就是这么的懂你。

关于qDebug的知识点小豆君就先讲到这里吧,熟练掌握以上的知识在我们的项目开发中基本上是够用了。有兴趣的同学,还可以查看qWarning() qCritical() qFatal()这些函数,大概够和qDebug()类似,这里我就不讲了。

============= End

qdebug打印数组所有内容_qDebug 的使用相关推荐

  1. 使用指针打印数组的内容

    写一个函数打印一维整型arr数组的内容,不使用数组下标,使用指针 思路:数组名代表数组的首元素地址,我们用int*指针接收数组首元素地址也就是arr,在for循环中(循环范围为:数组长度-1),让指针 ...

  2. php 输出数组内容_关于打印数组的10种方法详解

    假设有一个数组:<?php $arr=["PHP","中文","网"]; echo $arr; ?>请问上面的代码会输出什么?上 ...

  3. c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次

    [题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...

  4. 《C语言进阶》使用指针花式打印数组内容

    本文将介绍几个打印数组内容的方法,其中会涉及到指针的应用,方便加深大家对指针的理解. int main() {int arr[10] = {1,2,3,4,5,6,7,8,9,10};int sz = ...

  5. 打印数组算法:堆栈与深度优先搜索(迷宫问题)

    每日一贴,今天的内容关键字为打印数组 栈堆的拜访规矩被制约为Push和Pop两种作操,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)则掏出前当栈顶的元素,也就是说,只能拜访栈顶元素而不能拜 ...

  6. Java 中怎么打印数组?

    分享一道经典Java面试题:   Java 中怎么打印数组? 你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由于数组没有实现 toSt ...

  7. java 打印数组数字,Java数组打印出奇怪的数字和文本

    本问题已经有最佳答案,请猛点这里访问. 我是编程新手.我相信这个问题的答案是肯定的,但我不知道要搜索什么. 好的,我马上去. 这是我的代码: int[] arr; arr = new int[5]; ...

  8. 如何用指针的方法打印数组的元素

    首先要创建一个数组,对其进行初始化 int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 初始化后,我们要先求元素个数 int sz = sizeof(ar ...

  9. C语言交换两个数组的内容

    C语言交换两个数组的内容 **思路分析:**创建一个临时的变量,用来保存循环中每一次一数组的值,然后把数组二的值赋值给数组一,再把临时变量的值赋值给数组一,这样就完成了两个数组的内容交换 #inclu ...

最新文章

  1. Revit初学者完整指南 The Complete Revit Guide for Beginners
  2. 梯度中心化,一行代码加速训练并提升泛化能力
  3. KaliLinux常用服务配置教程DHCP服务工作流程
  4. 前沿·探索·想象力,今年的云栖大会有啥不一样?
  5. Nginx 服务器开启status页面检测服务状态
  6. XML——生成 XML 文档(读入 XML的反向过程)
  7. linux安装mysql后怎么进去_linux安装mysql详细步骤
  8. Deep Learning 【Nature review】
  9. mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...
  10. 数据结构的时间复杂度与空间复杂度、及相关证明
  11. java变量和方法的覆盖和隐藏(翻译自Java Tutorials)
  12. php中array怎么用,php中array()函数如何使用
  13. 不可忽视的IT运维管理
  14. Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问
  15. python老齐_python-basic
  16. 传智播客黑马程序员28期JavaEE基础及就业班视频教程
  17. 分析系统业务流程和绘制系统业务流程图
  18. vbox虚拟机安装ssh工具远程连接安装docker
  19. winform 图像处理
  20. linux中cpu使用率命令,LINUX下查看CPU使用率的命令

热门文章

  1. BigInteger 用法详解
  2. 【gin学习笔记】07初识GROM使用GORM进行数据库操作
  3. 基于阿里云的手机短信验证码和注册校验逻辑
  4. CSTrack: Rethinking the competition between detection and ReID in Multi-Object Tracking
  5. iis服务器的网站日志,IIS web服务器访问日志
  6. 数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
  7. 树莓派 android iphone,PiPhone是使用Raspberry Pi树莓派构建的手机
  8. Git合并出现MERGING有效解决方法
  9. 经典ARP协议讲解,一定要看
  10. 版本控制工具 --- Git 详解