获取给定一个单元格的所有行值被选中 QTableView

Get All Row Values Given One Cell Is Selected QTableView

我正在使用 PyQt5。我有一个 QTableView 如下:

1 a1 b1 c1
2 a2 b2 c2
3 a3 b3 c3

我知道如何将所选项目的文本作为列表获取。

但我需要那些选定项目的整行。

想象一下,选择了 c1 和 b3。现在我得到 [c1, b3],但我需要的是一个字典或列表列表:

selected = {1:[a1,b1,c1], 2:[a3,b3,c3]}
ór
selected = [[a1,b1,c1],[a3,b3,c3]}

我用来获取 [c1, b3] 的代码如下:

selection = self.pandasTV.selectionModel()
indexes = selection.selectedIndexes()
cells_data = []
for i, index in enumerate(indexes):
    cells_data.append(self.model.data(index))

解决方案是访问所选索引的行兄弟。


selection = self.pandasTV.selectionModel()
indexes = <b>selection.selectedRows()</b>
cells_data = []
columns = range(self.model.columnCount())
for index in indexes:
    row = index.row()
    cells_data.append([index.sibling(row, c).data() for c in columns])

请注意,自 Qt 5.11 起,您可以使用 index.siblingAtColumn(c).data()