【问题标题】:View contents of QStandardItemModel in Locals View in Qt Creator在 Qt Creator 的 Locals 视图中查看 QStandardItemModel 的内容
【发布时间】: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 时将临时变量添加到代码中并重新编译 - 有没有更快的方法?

【问题讨论】:

    标签: c++ qt debugging qt-creator


    【解决方案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 的每个项目中找到实际的文本数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      相关资源
      最近更新 更多