在 Qt Creator 的 Locals 视图中查看 QStandardItemModel 的内容

Posted

技术标签:

【中文标题】在 Qt Creator 的 Locals 视图中查看 QStandardItemModel 的内容【英文标题】:View contents of QStandardItemModel in Locals View in Qt Creator 【发布时间】:2018-01-12 23:32:49 【问题描述】:

有没有办法通过使用 Qt Creator 中的 Locals and Expressions 窗口查看存储在 QStandardItemModel 对象中的数据,以便在调试时监控它们的值?

我可以在 Locals 窗口中看到数组的内容,但是对于 QStandardItemModel,该表示没有向我显示里面的数据: Image of Qt Creator Locals Window showing a QStandardItemModel.

我正在使用 Qt Creator 4.0.3 版和 Qt 5.7.0 版。

我已经尝试了以下方法,但它们没有帮助:

右键单击“局部变量”窗口中的对象,选择“更改值显示格式”并将其设置为原始数据、字符串或 10 项数组; 检查工具/选项下的“加载系统 GDB Pretty Printers”是否已关闭。

我还尝试将myQStandardItemModel->item(0,0)->text() 添加到“表达式”窗口,但这给出了<no such value> 的值。但是,如果我将它直接放在代码中,并将其分配给临时变量,则该表达式确实有效。虽然我可以使用这种技术进行调试,但它迫使我在每次发现需要检查 QStandardItemModel 时将临时变量添加到代码中并重新编译 - 有没有更快的方法?

【问题讨论】:

【参考方案1】:

我现在发现,如果我从使用 Qt Creator 切换到使用 Microsoft Visual Studio 2015 来调试我的代码,我可以在中断模式下在 Locals 窗口中看到 QStandardItemModel 的内容。 QStandardItemModel中第一项的数据可以在:

myQStandardItemModel / QAbstractItemModel / QObject / d_ptr / [Raw View] / d / 
[QStandardItemModelPrivate] / root / [Raw View] / d / d_ptr / [Raw View] / d / children / 
[0] / d_ptr / [Raw View] / d / values / [0] / value

下面的截图说明了这一点:

.

我还尝试使用 Microsoft Visual C++ 编译器编译 Qt Creator 中的代码,并使用 Windows SDK 中的 CDB 调试器进行调试。然而,尽管这确实在 Locals 窗口中提供了比 MinGW 更多的关于 QStandardItemModel 的调试信息,但我无法在 QStandardItemModel 的每个项目中找到实际的文本数据。

【讨论】:

以上是关于在 Qt Creator 的 Locals 视图中查看 QStandardItemModel 的内容的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator Mac OS X 10.8.3 调试助手不起作用

Qt Creator,全屏视图

qt creator中在调试状态下如何查看变量的值

Qt Creator 5.6 如何在一个项目中使用大量(3000+)小部件加速编译

调试期间 Qt Creator 中的外设寄存器

qt creator 中 ui文件 怎么用编译界面修改?