【发布时间】:2020-04-18 17:15:27
【问题描述】:
我在表格视图中有一个 QStandarditemModel,如下所示:
model = QStandardItemModel(0, 4)
table = QTableView()
table.setModel(self.model)
然后,我连续添加q个QCombobox
x2 = QComboBox()
tabel.setIndexWidget(model.index(1, 1), x2)
我正在尝试获取项目(组合框)的行索引。我尝试使用
item = sender()
tabel.Indexof(item)
有没有办法在选择 QComboBox 时获取行索引
【问题讨论】:
-
无法直接访问它,您必须以某种方式对其进行跟踪。一个简单的字典就可以解决问题:每次创建一个新的小部件时,使用
self.widgetMapping[widget] = (row, column)之类的东西(最好使用表格坐标,而不是QModelIndexes),然后您可以使用model.index(*self.widgetMapping[self.sender()])获取索引。请记住,setIndexWidget()应谨慎使用,通常最好先使用项目委托,然后再使用openPersistentEditor(index)。 -
PS:不要盲目尝试“随机”功能。请阅读并在文档中搜索:在您的情况下,与 QTableView 及其祖先 QAbstractItemView 相关的页面。