我正在使用QTableView
具有该模型的类:
class PaletteTableModel(QtCore.QAbstractTableModel):
def __init__(self,colors = [[]],headers =[],parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.__colors=colors
self._headers=headers
def rowCount(self,parent):
return len(self.__colors)
def columnCount(self,parent):
return 6
def headerData(self,section,orientation,role):
if role==QtCore.Qt.DisplayRole:
if orientation==QtCore.Qt.Horizontal:
return self._headers[section]
else:
return QtCore.QString("Credit %1").arg(section+1)
def data(self,index,role):
if role==QtCore.Qt.ToolTipRole:
row=index.row
return "Crédit"
if role==QtCore.Qt.EditRole:
row=index.row()
column=index.column()
return self.__colors[row][column]
if role==QtCore.Qt.DisplayRole:
row=index.row()
column=index.column()
value=self.__colors[row][column]
return value
def setData(self,index,value,role=QtCore.Qt.EditRole):
if role==QtCore.Qt.EditRole:
row =index.row()
column=index.column()
ch=(value)
self.__colors[row][column]=ch
self.dataChanged.emit(index,index)
return True
def flags(self, index):
return QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsSelectable
我想检索此表视图的选定行。 (如果可能的话,我想要Python代码)。
这取决于“所选行”的含义。默认情况下,一个QTableView
有它的选择方式 http://qt-project.org/doc/qt-4.8/qabstractitemview.html#selectionMode-prop set to ExtendedSelection
,及其选择行为 http://qt-project.org/doc/qt-4.8/qabstractitemview.html#selectionBehavior-prop set to SelectItems
。这意味着可以同时选择不同行和列中的多个单独的表格单元格。那么哪一行应该算作“选定的”行呢?
The 选择模型 http://qt-project.org/doc/qt-4.8/qabstractitemview.html#selectionModel表视图的有一个选定的行 http://qt-project.org/doc/qt-4.8/qitemselectionmodel.html#selectedRows方法将返回行的索引列表,其中所有列被选中(即当您单击一行的标题部分时):
indexes = table.selectionModel().selectedRows()
for index in sorted(indexes):
print('Row %d is selected' % index.row())
但是,如果您想获取所有行最后一个选择单元格后,您可以使用选定的索引 http://qt-project.org/doc/qt-4.8/qtableview.html#selectedIndexes method:
rows = sorted(set(index.row() for index in
self.table.selectedIndexes()))
for row in rows:
print('Row %d is selected' % row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)