debugging 如何快速打印Qt模型中的数据以进行调试?

9bfwbjaz  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(127)

有时候,我会发现把一些数据从Qt模型(继承自QAbstractItemModel)转储到控制台是很有用的,这样可以在调试时大致了解我正在处理的内容。这是你对实现__repr__的对象所做的事情。它会在显示角色中使用这些数据。
有没有一种快速的方法可以做到这一点?如果没有,我是否遗漏了某个要点?如果没有,你如何快速检查一个模型包含什么数据,而不需要完成实现视图、小部件等步骤,并重新启动GUI工具?你如何在Qt模型/视图框架中调试模型/数据?
我知道我不是QtMaven,我的问题可能有明显的矛盾,但这是我还没有找到一个满意的答案,尽管我已经搜索了这个主题多次。感谢您的任何帮助,你可以提供。

ukdjmx9f

ukdjmx9f1#

下面是我所寻找的功能类型在python中的一个粗略实现,它可以在Qt.py中工作,model是从QAbstractItemModel继承的类:

from Qt import QtCore

def print_model_data(model, parent=None, level=0, role=QtCore.Qt.DisplayRole):
    parent = parent or QtCore.QModelIndex()
    for r in range(model.rowCount(parent)):
        for c in range(model.columnCount(parent)):
            index = model.index(r, c, parent)
            if index is None:
                continue

            print("    " * level + str(index.data(role)))
            print_model_data(model, index, level+1)

用法:

>>> print_model_data(model)
root_0
   root_0_elem_0
   root_0_elem_1
root_1
   root_1_elem_0

这可能还没有涵盖所有用例,如果需要,我会更新我的答案。

相关问题