Qt qDebug基本的使用方法详解

这篇具有很好参考价值的文章主要介绍了Qt 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

qdebug,Qt,C++基础,qt,开发语言

去除双引号和空格

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

qdebug,Qt,C++基础,qt,开发语言

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

qdebug,Qt,C++基础,qt,开发语言

调试输出级别

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;
}

qdebug,Qt,C++基础,qt,开发语言

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

  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;
}

qdebug,Qt,C++基础,qt,开发语言

占位符

占位符 描述
%{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

qdebug,Qt,C++基础,qt,开发语言

VS工程

vs工程=>右键“属性”=>“C/C++”=>“预处理器”=>“预处理器定义”
qdebug,Qt,C++基础,qt,开发语言

在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的查看,它还提供了更多高级功能,帮助您更好地理解和调试您的程序。

qdebug,Qt,C++基础,qt,开发语言
DebugView下载文章来源地址https://www.toymoban.com/news/detail-855727.html

到了这里,关于Qt qDebug基本的使用方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • valgrind基本功能介绍、基础使用方法说明 valgrind基本功能介绍、基础使用方法说明

    valgrind基本功能介绍、基础使用方法说明_valgrind使用方法_HNU Latecomer的博客-CSDN博客 拷贝效果不好,请看原文。 1、Valgrind概述 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。 Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(f

    2024年02月07日
    浏览(51)
  • Java中的方法引用--【基本使用详解】

    🎉博客首页:痛而不言笑而不语的浅伤 📢欢迎关注🥳点赞 👍 收藏 ⭐留言 📝 欢迎讨论! 🔮本文由痛而不言笑而不语的浅伤原创,CSDN首发! 🌋系列专栏:《JavaSE系列详解》 🧿首发时间:2022年5月27日 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平有限,如果发现错

    2024年02月06日
    浏览(41)
  • Golang单元测试详解(一):单元测试的基本使用方法

    Golang 中的单元测试是使用标准库 testing 来实现的,编写一个单元测试是很容易的: 创建测试文件:在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包),以 _test.go 为后缀名。例如,要测试net包中 dial.go 中的方法,在 net 包中创建一个名字为 dial_test.g

    2024年02月06日
    浏览(36)
  • QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】

    对于Linux用户,如果Qt是通过“ apt-get”之类的软件包管理器工具安装的,请确保已安装Qt5开发软件包qtbase5-private-dev QtXlsx是一个可以读写Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。该库可用于从头开始生成新的.xlsx文件从现有.xlsx文件中提取数据编

    2024年02月12日
    浏览(39)
  • git的基本使用方法,操作详解(如何拉取代码,上传代码)

    在写代码的时候可能有这样的需求: 保存源代码的不同版本,当软件出现bug时能回溯到之前的状态,比较版本之间的差别,从而找出bug源头。 多人分工协作的时候,会修改到相同的文件,如果有一个工具能够帮助我们完成修改的合并,就能节省不少时间,版本控制系统应运

    2024年02月02日
    浏览(44)
  • 自动化测试工具Selenium的基本使用方法,软件测试基础

    browser.find_element(By.ID,‘kw’).send_keys(“美女”) browser.find_element_by_id(‘kw’).send_keys(‘性感’) 2.通过标签name属性进行定位 browser.find_element_by_name(“wd”).send_keys(“Linux”) browser.find_element(By.NAME,‘wd’).send_keys(“美女”) 3.通过标签名进行定位 browser.find_element_by_tag_name(“input”).

    2024年04月22日
    浏览(48)
  • 详解--Postman基本使用方法+接口关联+[Python,如何成为杰出的程序员

    安装方法:双击exe文件可以完成安装,简称傻瓜式安装,这里并是说各位,而是指安装方式很简单,直接下一步下一步就好。 进来之后就是这样的了, 这里暂做简介,后续我们也会慢慢讲到其他的功能点。 工具使用 ==== 步骤: 1、复制链接,百度搜索天气,这里只是建议哈

    2024年04月10日
    浏览(43)
  • 【Java 基础篇】Java 方法使用详解:让你轻松掌握方法的奥秘

    如果你正在学习Java编程,方法是一个不可或缺的重要概念。方法允许你将代码组织成可重用的块,提高了代码的可维护性和可读性。在本篇博客中,我们将深入探讨Java方法的使用,从基础概念开始,逐步介绍如何定义、调用、传递参数、返回值、异常处理以及方法的最佳实

    2024年02月10日
    浏览(33)
  • QT中EventFilter使用方法

    Qt处理事件共有五种方式,其中第三种方式:” 在QObject中注册事件过滤器 ”的基本使用方法如下:如果对象使用installEventFilter()函数注册了事件过滤器, 目标对象中的所有事件将首先发给这个监视对象的eventFilter()函数 。eventFilter()函数 返回true ,则取消事件( 事件不再向目标

    2024年02月03日
    浏览(26)
  • vim基本使用方法

    vim是linux上一个有多个编辑模式的编辑器。 这里主要介绍三种模式: 命令模式(Normal mode) 执行命令的模式,主要任务就是控制光标移动、复制和删除。 插入模式(Insert mode) 可以进行文字输入,编写代码模式。 末行/底行模式(last line mode) 文件保存退出,文本替换、列出

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包