【问题标题】:PyQt4 - QTableView - How to loop over QTableViewPyQt4 - QTableView - 如何循环 QTableView
【发布时间】:2015-09-23 19:35:47
【问题描述】:

我试图在 python 中找到一个示例,我可以在其中循环 QTableView 的模型元素并打印整行。 我已经找到了如何循环选择的行,但没有选择行时什么都没有。

有人可以帮助我吗?无需告诉我如何创建模型以及如何将其应用于 QTableModel。我只对如何迭代行感兴趣。

【问题讨论】:

    标签: python pyqt4 qtableview


    【解决方案1】:

    我认为您在问题中的某些地方混淆了模型和视图...

    但是,为什么不简单地获取行数和列数并遍历所有这些:

    for irow in xrange(model.rowCount()):
        row = []
        for icol in xrange(model.columnCount()):
            cell = model.data(model.createIndex(irow, icol))
            row.append(cell)
        # print all elems per row
        print ', '.join(str(c) for c in row))
    

    事情可能会被美化和/或以更紧凑的方式编写,但基本上就是这样。 还是我错过了什么?

    【讨论】:

    • 该算法只需少量更改即可工作。根据我的模型,我必须在以下行中包含显示角色:cell = model.getData(model.createIndex(irow, icol))。所以它必须是:cell = model.data(model.createIndex(irow, icol), QtCore.Qt.DisplayRole)。同样因为我的模型是为表和树创建的,所以 rowCount 和 columnCount 方法包含父级作为参数。由于我的模型用于表格,因此我必须通过 None。谢谢!
    • DisplayRole 和无效的parent 通常是datarowCount/columnCount 的默认参数:doc.qt.io/qt-4.8/qabstractitemmodel.html#data 这就是我省略这些的原因...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多