qdebug打印数组所有内容_qDebug 的使用
在项目的开发中,当我们调试程序时,最常用的就是打印信息了,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 的使用相关推荐
- 使用指针打印数组的内容
写一个函数打印一维整型arr数组的内容,不使用数组下标,使用指针 思路:数组名代表数组的首元素地址,我们用int*指针接收数组首元素地址也就是arr,在for循环中(循环范围为:数组长度-1),让指针 ...
- php 输出数组内容_关于打印数组的10种方法详解
假设有一个数组:<?php $arr=["PHP","中文","网"]; echo $arr; ?>请问上面的代码会输出什么?上 ...
- c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次
[题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...
- 《C语言进阶》使用指针花式打印数组内容
本文将介绍几个打印数组内容的方法,其中会涉及到指针的应用,方便加深大家对指针的理解. int main() {int arr[10] = {1,2,3,4,5,6,7,8,9,10};int sz = ...
- 打印数组算法:堆栈与深度优先搜索(迷宫问题)
每日一贴,今天的内容关键字为打印数组 栈堆的拜访规矩被制约为Push和Pop两种作操,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)则掏出前当栈顶的元素,也就是说,只能拜访栈顶元素而不能拜 ...
- Java 中怎么打印数组?
分享一道经典Java面试题: Java 中怎么打印数组? 你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法来打印数组.由于数组没有实现 toSt ...
- java 打印数组数字,Java数组打印出奇怪的数字和文本
本问题已经有最佳答案,请猛点这里访问. 我是编程新手.我相信这个问题的答案是肯定的,但我不知道要搜索什么. 好的,我马上去. 这是我的代码: int[] arr; arr = new int[5]; ...
- 如何用指针的方法打印数组的元素
首先要创建一个数组,对其进行初始化 int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 初始化后,我们要先求元素个数 int sz = sizeof(ar ...
- C语言交换两个数组的内容
C语言交换两个数组的内容 **思路分析:**创建一个临时的变量,用来保存循环中每一次一数组的值,然后把数组二的值赋值给数组一,再把临时变量的值赋值给数组一,这样就完成了两个数组的内容交换 #inclu ...
最新文章
- Revit初学者完整指南 The Complete Revit Guide for Beginners
- 梯度中心化,一行代码加速训练并提升泛化能力
- KaliLinux常用服务配置教程DHCP服务工作流程
- 前沿·探索·想象力,今年的云栖大会有啥不一样?
- Nginx 服务器开启status页面检测服务状态
- XML——生成 XML 文档(读入 XML的反向过程)
- linux安装mysql后怎么进去_linux安装mysql详细步骤
- Deep Learning 【Nature review】
- mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...
- 数据结构的时间复杂度与空间复杂度、及相关证明
- java变量和方法的覆盖和隐藏(翻译自Java Tutorials)
- php中array怎么用,php中array()函数如何使用
- 不可忽视的IT运维管理
- Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问
- python老齐_python-basic
- 传智播客黑马程序员28期JavaEE基础及就业班视频教程
- 分析系统业务流程和绘制系统业务流程图
- vbox虚拟机安装ssh工具远程连接安装docker
- winform 图像处理
- linux中cpu使用率命令,LINUX下查看CPU使用率的命令
热门文章
- BigInteger 用法详解
- 【gin学习笔记】07初识GROM使用GORM进行数据库操作
- 基于阿里云的手机短信验证码和注册校验逻辑
- CSTrack: Rethinking the competition between detection and ReID in Multi-Object Tracking
- iis服务器的网站日志,IIS web服务器访问日志
- 数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
- 树莓派 android iphone,PiPhone是使用Raspberry Pi树莓派构建的手机
- Git合并出现MERGING有效解决方法
- 经典ARP协议讲解,一定要看
- 版本控制工具 --- Git 详解