如何从 QTableView 中检索数据

Posted

技术标签:

【中文标题】如何从 QTableView 中检索数据【英文标题】:How to retrieve data from a QTableView 【发布时间】:2018-02-13 07:47:43 【问题描述】:

我有一个有两列的 QTableView。第一个显示姓名,另一个显示他们各自的电子邮件地址。我试图从 QTableView 获取该信息并将其打印到命令行。我希望信息看起来像

anderson anderson1@gmail.com
wariner warinera@yahoo.com

当我运行下面的代码时,它会打印无。这是我的示例代码

identity = []

for row in range(self.table_model3.rowCount()):
    identity.append([])
    for column in range(self.table_model3.columnCount()):
        index = self.table_model3.index(row, column)
        info = identity[row].append(str(self.table_model3.data(index)))
        print(info)

【问题讨论】:

您必须提供minimal reproducible example 追加不返回任何东西,直接打印列表:print(identity[row]) 【参考方案1】:

您的代码正在打印None,因为您将信息设置为将数据附加到身份的返回值,即None。要以您想要的格式打印,请尝试:

for row in range(self.table_model3.rowCount()):
    identity.append([])
    for column in range(self.table_model3.columnCount()):
        index = self.table_model3.index(row, column)
        identity[row].append(str(self.table_model3.data(index))

for item in identity:
    print('%s %s' % (item[0], item[1]))

【讨论】:

@eyllanesc ...是吗? 您可以使用索引访问模型的元素吗?你测试过吗? 是的,我已经测试过这个答案,并且我自己也多次使用过这种确切的方法。就像我说的,这假设他在表视图模型中的数据结构是一个称为数据的嵌套列表。这显然是他正在做的事情。他在代码中提到了self.table_model3.data,所以我假设他的底层数据存储是一个名为 data 的嵌套列表。 不必假设内部结构如何,例如如果模型是 QStandardItemModel,您的代码是否可以工作? 它不适用于 QStandardItemModel,但就像我的回答所说,这是假设数据结构是在表模型内部使用的嵌套列表。很可能是 QAbstractTableModel,这是一种常见的方法。随着发布的示例代码的数量,必须做出假设。如果这不是他使用的模特风格,他不必接受答案。但这仍然是一个问题的答案。

以上是关于如何从 QTableView 中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将 qdate 添加到 qtableview

如何从命名管道中获取结构化数据并将其写入 Qt 中的 qtableview

从 Qt 中的 QDBusMessage 检索数据

如何在 QTableView 单元格角落绘制三角形以显示可以从列表中选择的模型数据?

如何清除 QTableView

如何在qtableview上创建qcheckbox,从qql数据库获取数据