检查基本的 Qt 对象

调试器的最强大功能之一是 局部变量表达式 视图可以显示属于 Qt 基本对象的数据。例如,对于 QObject,你看到的是子代、信号和槽的列表,而不是指向某些私有数据结构的指针。

同样,Qt Creator 的调试器会以有序的方式显示 QHashQMap 的内容,而不是显示许多指针和整数。调试器还显示了 QFileInfo 的访问数据以及 真实QVariant 内容。

更改值显示格式

局部变量表达式 视图中,选择上下文菜单中的 更改值显示格式,以更改值显示格式。可用的选项取决于当前项的类型,并由 调试助手 提供。

要强制以类似 C 的格式显示结构,请转到 首选项 > 调试器 > 局部变量和表达式,然后清除 使用调试助手。这仍然使用 Python 脚本,但生成更基础的输出。要强制单个对象或所有给定类型的对象的纯显示,请在 局部变量表达式 视图的上下文菜单中选择 更改值显示格式 > 原始

通常,您可以更改类似于 QByteArraystd::string 的字符串类型数据的编码,或者在一个完整编辑器窗口中显示数据。

对于类似于 QMapQHashstd::map 的映射类型数据,您可以选择 紧凑 选项,该选项使用 名称 列作为键,从而简洁地显示具有短键的容器,例如数字或短字符串。例如,要展开所有 QMap 的值,请选择 更改值显示格式 > 紧凑

对于字符串,您可以选择 更改值显示格式 > 单独窗口 在文本编辑器中查看字符串内容,而不是以单行项目形式在视图中查看。对于 QPixmap,您可以通过逐步执行代码看到逐像素创建的位图。

更改变量值

您可以使用 局部变量表达式 视图来修改简单数据类型变量(如 intfloatQStringstd::string)的内容,当应用程序被中断时。为此,请单击 列表,使用就地编辑器修改值,然后按 Enter 键。

要更改 QVectorstd::vector 值的完整内容,请将所有值以逗号分隔输入到主要条目的 列表中。但是,Qt Creator 不会尝试重新分配变量的内存,因此仅在新的内容适合旧内存并且调试器支持更改值时才应用更改。

信号-槽连接

如果一个类的实例是从 QObject 继承的,您可以使用 Qt 的信号和槽机制找到连接到此对象槽的所有其他对象。转到 首选项 > 调试 > 局部变量 & 表达式 > 使用调试助手

{Locals & Expressions preferences}

局部变量 视图中,展开对象的条目,然后打开 子项下的槽。视图显示了作为槽子项连接到此槽的对象。同样,您可以看到信号的子项。

低级别数据

如果您无法调试 Qt 对象,因为它们的数据已损坏,您可以通过关闭调试助手来使低级别结构可见。

要关闭调试助手,请取消选中 首选项 > 调试器 > 局部变量 & 表达式 中的 使用调试助手

另请参阅如何:调试调试调试器调试器

©2024 The Qt Company Ltd. 本文档中包含的贡献是由各自的版权所有者拥有的。本提供的文档是根据 GNU 自由文档许可证版本 1.3 许可的,由自由软件基金会发布。Qt 和分别的标志是 The Qt Company Ltd 在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。