Qt qDebug基本的使用方法详解

目录

  • qDebug基本用法
    • 输出字符串
    • 输出变量值1
    • 输出变量值2
    • 支持流式输出
    • 输出十六进制
    • 去除双引号和空格
    • 调试输出级别
  • 自定义类型输出
  • 自定义日志信息的输出格式
    • 示例
    • 占位符
    • 设置环境变量
  • 关闭QDebug输出
    • Qt工程
    • VS工程
  • 在VS工程中如何查看qDebug输出

DebugView下载

qDebug基本用法

  qDebug是Qt框架中用于输出调试信息的一个宏。它类似于C++标准库中的std::cout,用于在控制台中输出调试信息。qDebug的使用非常简单,可以用于输出各种类型的数据,例如字符串、整数、浮点数等。

输出字符串

qDebug() << "Hello, World!";

输出变量值1

int num = 10;
qDebug() << "num is: " << num;

输出变量值2

QString name = "xiao";
int age = 25;
qDebug() << QString("Name: %1, Age: %2").arg(name).arg(age);

支持流式输出

int num = 10;
QString name = "xiao";
qDebug() << "num is: " << num << ", name is: " << name;

输出十六进制

int num = 80;
qDebug() << QString("0x%1").arg(num, 8, 16, QChar('0')); //十六进制输出,8位,不够补0

在这里插入图片描述

去除双引号和空格

QString name = "xiao";
QString age = "20";
qDebug() << name << age;  //输出带有双引号和空格

在这里插入图片描述

QString name = "xiao";
QString age = "20";
qDebug().noquote().nospace() //不带双引号和空格
    << name << age;

在这里插入图片描述

调试输出级别

qInfo、qWarning、qCritical等,用于输出不同级别的调试信息。

自定义类型输出

class Size {
public:
    Size(int w, int h) {
        this->width = w;
        this->height = h;
    }
	//添加友员函数,可以在此函数中访问类中的所有成员
    friend QDebug operator<<(QDebug dbg, const Size &size);
private:
    int width;
    int height;
};

//实现输出运算符重载
QDebug operator<<(QDebug dbg, const Size &size)
{
    dbg.nospace() << "Size(" << size.width << "," << size.height << ")";
    return dbg;
}

int main(int argc, char *argv[])
{
    Size size(1, 20);
    qDebug() << size;
    return 0;
}

在这里插入图片描述

自定义日志信息的输出格式

  qSetMessagePattern 是 Qt 提供的一个功能强大的函数,用于设置日志信息的输出格式和样式。它允许你自定义日志消息的显示方式,包括消息类型、时间戳、文件名、行号等。

  通过 qSetMessagePattern 函数,你可以设置一个模式字符串,用于格式化日志消息。该模式字符串可以包含占位符,用于指示消息的不同部分。例如,你可以使用 %type 占位符表示消息类型,%time 占位符表示时间戳,%file 占位符表示文件名,%line 占位符表示行号等。

示例

int main(int argc, char *argv[])
{
    qSetMessagePattern("%{time yyyy-MM-dd hh:mm:ss.zzz} %{type} - %{message} %{file}:%{line}");

    qDebug() << "hello world!";
    return 0;
}

在这里插入图片描述

占位符

占位符描述
%{appname}QCoreApplication::applicationName()
%{category}Logging category
%{file}Path to source file
%{function}Function
%{line}Line in source file
%{message}The actual message
%{pid}QCoreApplication::applicationPid()
%{threadid}The system-wide ID of current thread (if it can be obtained)
%{qthreadptr}A pointer to the current QThread (result of QThread::currentThread())
%{type}“debug”, “warning”, “critical” or “fatal”
%{time process}time of the message, in seconds since the process started (the token “process” is literal)
%{time boot}the time of the message, in seconds since the system boot if that can be determined (the token “boot” is literal). If the time since boot could not be obtained, the output is indeterminate (see QElapsedTimer::msecsSinceReference()).
%{time [format]}system time when the message occurred, formatted by passing the format to QDateTime::toString(). If the format is not specified, the format of Qt::ISODate is used.
%{backtrace [depth=N] [separator=“…”]}A backtrace with the number of frames specified by the optional depth parameter (defaults to 5), and separated by the optional separator parameter (defaults to “|”). This expansion is available only on some platforms (currently only platfoms using glibc). Names are only known for exported functions. If you want to see the name of every function in your application, use QMAKE_LFLAGS += -rdynamic. When reading backtraces, take into account that frames might be missing due to inlining or tail call optimization.

设置环境变量

可以修改环境变量QT_MESSAGE_PATTERN来修改输出格式,如果调用了qSetMessagePattern函数并设置了QT_MESSAGE_PATTERN,则环境变量优先。

关闭QDebug输出

Qt工程

在Qt工程文件(xxxxx.pro)里面添加

DEFINES += QT_NO_DEBUG_OUTPUT

在这里插入图片描述

VS工程

vs工程=>右键“属性”=>“C/C++”=>“预处理器”=>“预处理器定义”
在这里插入图片描述

在VS工程中如何查看qDebug输出

DebugView下载
如果您在Visual Studio工程中使用qDebug觉得不便,我为您推荐一款能够即时查看qDebug输出的实用工具——DebugView。

DebugView是一款专门用于捕获调试信息的工具,尤其适用于处理qDebug的输出。它能够在您运行Qt应用程序时,即时、动态地捕获并显示qDebug的日志信息。这意味着,无论您在代码中的哪个位置使用qDebug进行调试输出,DebugView都能为您捕捉并呈现这些信息,让您轻松跟踪程序的执行流程。

使用DebugView查看qDebug输出的步骤相当简单:

  1. 首先,启动DebugView工具。
  2. 随后,运行您的Qt应用程序。
  3. 当您的程序通过qDebug输出调试信息时,这些信息将会被DebugView实时捕获并展示在界面上。

借助DebugView的帮助,您将能够更轻松地在Visual Studio工程中管理和调试Qt应用程序。这款工具不仅限于qDebug的查看,它还提供了更多高级功能,帮助您更好地理解和调试您的程序。

在这里插入图片描述
DebugView下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295757.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【EI会议征稿通知】2024年人工智能与电力系统国际学术会议(AIPS 2024)

2024年人工智能与电力系统国际学术会议&#xff08;AIPS 2024&#xff09; 2024 International Conference on Artificial Intelligence and Power System 2024年人工智能与电力系统国际学术会议 (AIPS 2024) 将于2024年04月19日-21日在中国成都召开。AIPS 2024将围绕“人工智…

开源网络安全工具

开源工具代表了技术领域的一股动态力量&#xff0c;体现了创新、协作和可访问性。这些工具以透明度和社区驱动的原则开发&#xff0c;允许用户根据自己的独特需求仔细检查、修改和调整解决方案。 在网络安全领域&#xff0c;开源工具是无价的资产&#xff0c;使组织能够增强防…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建一个TcpConnection实例 以及 接收客户端数据

#CSDN 年度征文&#xff5c;回顾 2023&#xff0c;赢专属铭牌等定制奖品# 一、主线程反应堆模型的事件添加和处理详解 >>服务器和客户端建立连接和通信流程&#xff1a; 基于多反应堆模型的服务器结构图&#xff0c;这主要是一个TcpServer&#xff0c;关于HttpServer,…

vue3中使用elementplus中的el-tree-select,自定义显示名称label

<el-tree-select v-model"addPval" node-key"id" :data"menulists" :render-after-expand"false" :props"menuProps" /> <el-divider />let menuProps {//自定义labellabel: (data: { name: any; }) > {ret…

海外分支访问国内服务器系统慢怎么办?

在全球业务不断扩张的今天&#xff0c;企业面临着海外分支访问国内总部服务器系统慢的问题。为了解决这一挑战&#xff0c;我们引入了lxway全球系统专网产品&#xff0c;为企业提供高效、安全的全球网络连接方案。通过解析技术瓶颈和专网的优势&#xff0c;本文将揭示如何借助先…

Wrk压测发送Post请求的正确姿势

一、Wrk简介 wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计&#xff0c;并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外&#xff0c;用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。 …

七牛云cdn图片加载错误:net::ERR_HTTP2_PROTOCOL_ERROR与HTTP2 检测工具

一、问题描述 今天运营的小伙伴提了个问题&#xff0c;她在后台上传图片的时候有时会遇到上传成功了&#xff0c;但实际回显图片却是一张“破图”&#xff1a; 二、原因调查 先了解一下ERR_HTTP2_PROTOCOL_ERROR是什么意思&#xff1a; ERR_HTTP2_PROTOCOL_ERROR是由HTTP/2协…

软件工程:用例图相关知识和多实例分析

目录 一、用例图相关知识 1. 基本介绍 2. 常用符号 二、用例图实例分析 1. 新闻管理系统 2. 医院病房监护系统 3. 实验上机安排系统 4. 远程网络教学系统 一、用例图相关知识 1. 基本介绍 用例图&#xff08;use case diagram&#xff09;是用户与系统交互的最简表示…

关于“Python”的核心知识点整理大全63

目录 20.2.11 使用 Git 跟踪项目文件 1. 安装Git 2. 配置Git 3. 忽略文件 .gitignore 注意 4. 提交项目 20.2.12 推送到 Heroku 注意 20.2.13 在 Heroku 上建立数据库 20.2.14 改进 Heroku 部署 1. 在Heroku上创建超级用户 注意 注意 20.2.11 使用 Git 跟踪项目文件…

C语言编译器(C语言编程软件)完全攻略(第二十六部分:C-Free使用教程(使用C-Free编写C语言程序))

介绍常用C语言编译器的安装、配置和使用。 二十六、C-Free使用教程&#xff08;使用C-Free编写C语言程序&#xff09; 1、安装C-Free 5.0 C-Free 是一款国产的Windows下的C/C IDE&#xff0c;最新版本是 5.0&#xff0c;整个软件才 14M&#xff0c;非常轻巧&#xff0c;安装…

Spring见解2

3.基于注解的IOC配置 学习基于注解的IOC配置&#xff0c;大家脑海里首先得有一个认知&#xff0c;即注解配置和xml配置要实现的功能都是一样的&#xff0c;都是要降低程序间的耦合。只是配置的形式不一样。4 3.1.创建工程 3.1.1.pom.xml <?xml version"1.0" e…

python面试pytorch面试

python面试 python中啥类型是不可更改的&#xff0c;啥类型是可以更改的 为什么Python执行速度慢&#xff0c;我们如何改进它&#xff1f; 自己总结&#xff1a; 1c语言属于编译型语言&#xff1a; 它的代码经过编译后再运行&#xff0c;执行速度快&#xff1b;不能跨平台&am…

SpringIOC之support模块DelegatingMessageSource

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动

对于一个TcpServer来说&#xff0c;它的灵魂是什么&#xff1f;就是需要提供一个事件循环EventLop(EventLoop)&#xff0c;不停地去检测有没有客户端的连接到达&#xff0c;有没有客户端给服务器发送数据&#xff0c;描述的这些动作&#xff0c;反应堆模型能够胜任。当服务器和…

图像处理中的DCT变换

图像处理中的DCT变换 Discrete Cosine Transform&#xff0c;离散余弦变换。 来源及公式推导&#xff0c;可以查看下面链接&#xff0c;介绍的比较详细&#xff0c;这里就不再重复说明了&#xff1a; 详解离散余弦变换&#xff08;DCT&#xff09; - 知乎 (zhihu.com)DCT变换…

DS|图(连通与生成树)

题目一&#xff1a;DS图 -- 图的连通分量 题目描述&#xff1a; 输入无向图顶点信息和边信息&#xff0c;创建图的邻接矩阵存储结构&#xff0c;计算图的连通分量个数。 输入要求&#xff1a; 测试次数t 每组测试数据格式如下&#xff1a; 第一行&#xff1a;顶点数 顶点…

VsCode开发工具的入门及基本使用

大家好&#xff0c;我是[阿猫的故乡]。很高兴能有机会与大家分享关于VsCode开发工具的入门及基本使用的知识。 文章目录 文章目录 前言 一、VsCode是什么&#xff1f; 二、使用步骤 1.如何下载 2.如何使用 总结 前言 在开发者社区中&#xff0c;Visual Studio Code&#xff08…

IPv6路由协议---IPv6静态路由

IPv6路由协议 路由是数据通信网络中最基本的要素。路由信息就是知道报文发送的路径信息,路由的过程就是报文转发的过程。 根据路由目的地的不同,路由可划分: 1.网段路由:目的地为网段,IPv4地址子网掩码长度小于32位或IPv6地址前缀长度小于128位。 2.主机路由:目的地为主…

算法第十一天-递增顺序搜索树

递增顺序搜索树 题目要求 解题思路 1.二叉搜索树&#xff08;BST&#xff09; 2.任意两个不同节点 遇到二叉搜索树&#xff0c;立即想到这句话&#xff1a;[二叉搜索树&#xff08;BST&#xff09;的中序遍历是有序的]。这是解决所有二叉搜索树问题的关键。 要求BST的任意两…

小H靶场笔记:DC-4

DC-4 January 4, 2024 2:37 PM Tags: teehee提权 Owner&#xff1a;只惠摸鱼 信息收集 探测靶机ip&#xff0c;发现应该是192.168.199.134 扫一下开放端口&#xff08;22、80&#xff09;、服务、版本、漏洞 根据扫描结果&#xff0c;在80端口可能有CSRF漏洞&#xff0c;…