【问题标题】:Iterating all items inside QListView using python使用python迭代QListView中的所有项目
【发布时间】:2015-05-06 11:15:59
【问题描述】:

我有一个QlistView,里面是一个带有项目名称(QstandardItem)的复选框(动态创建)。在Qlistview 下方是一个名为DatacheckercheckBox1 的复选框。我想要的是当这个DatacheckercheckBox1 复选框状态更改为“已检查”时,应该检查QlistView 内的所有复选框。我已通过

DatacheckercheckBox1 复选框发出信号
self.dlg.DatacheckercheckBox1.stateChanged.connect(self.selectAll)

我不知道要编写一个方法来迭代Qlistview 中的所有项目,如果尚未选中,则将其旁边的复选框设为“已选中”。

【问题讨论】:

  • 我认为下面的链接可以帮助你。检查它stackoverflow.com/questions/4629584/…
  • 是的,我确实看到了链接,但我在 QListView 的链接中找不到任何相关的方法。
  • 我认为@SAM 指的是.findItems 方法。
  • @ngulam。 QListView 类没有 findItems 方法。 QStandardItemModel 类可以,但它并不是真正适合这项工作的工具,因为它通过匹配文本而不是标志来过滤项目。

标签: python pyqt4 qt-designer


【解决方案1】:

使用模型迭代项目:

model = self.listView.model()
for index in range(model.rowCount()):
    item = model.item(index)
    if item.isCheckable() and item.checkState() == QtCore.Qt.Unchecked:
        item.setCheckState(QtCore.Qt.Checked)

【讨论】:

  • 感谢您的回复。我是 PyQT 的新手。很抱歉这个愚蠢的问题,但我想让我自己清楚。你能告诉我更多关于模型的信息吗?我在文档中没有找到任何对象模型,模型返回什么数据类型? rowCount 方法从何而来?
  • @harinish。我从您的问题中假设您使用的是QStandardItemModel,它是QAbstractItemModel 的子类。 rowCount 函数位于 Reimplemented Public Functions 部分。
  • 我能知道你在 item = model.item(index) 中做什么吗?
  • @harinish。它在给定索引处gets the item。返回的项目是QStandardItem,其中包含列表视图中该行/索引的数据。
  • 太棒了!非常感谢
猜你喜欢
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
相关资源
最近更新 更多