如何从 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 中检索数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从命名管道中获取结构化数据并将其写入 Qt 中的 qtableview