Hau*_*dly 8 python pyqt qtableview pyqt4 python-2.7
我正在使用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
Run Code Online (Sandbox Code Playgroud)
我想要检索此tableView的所选行.任何人请帮助我,如果可能的话我想要一个python代码
ekh*_*oro 19
这取决于你所说的"所选行".默认情况下,a QTableView
将其选择模式设置为ExtendedSelection
,并将其选择行为设置为SelectItems
.这意味着可以同时选择不同行和列中的多个单个表格单元格.那么哪一个应该算作"选定的行"呢?
table-view 的选择模型有一个selectedRows方法,该方法将返回选择了所有列的行的索引列表(即,当您单击行的标题部分时):
indexes = table.selectionModel().selectedRows()
for index in sorted(indexes):
print('Row %d is selected' % index.row())
Run Code Online (Sandbox Code Playgroud)
但是,如果要获取至少选定一个单元格的所有行,可以使用selectedIndexes方法:
rows = sorted(set(index.row() for index in
self.table.selectedIndexes()))
for row in rows:
print('Row %d is selected' % row)
Run Code Online (Sandbox Code Playgroud)
您可以用来检索所选行的方法之一是:
tableView = QtGui.QTableView()
tableModel = PaletteTableModel()
tableView.setModel(tableModel)
x = tableView.selectedIndexes ()
Run Code Online (Sandbox Code Playgroud)
"tableView.selectedIndexes()"返回一个QModelIndex列表
在我的情况下,我将此操作用于在 doubleClicked 事件中调用的函数,如下所示:我将此行代码添加到 init 函数中
self.tableSusAmigos.doubleClicked.connect(self.doubleClicked_table)
Run Code Online (Sandbox Code Playgroud)
之后,我像这样声明了 doubleClicked_table:
def doubleClicked_table(self):
index = self.tableSusAmigos.selectedIndexes()[0]
id_us = int(self.tableSusAmigos.model().data(index).toString())
print ("index : " + str(id_us))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我显示一个 id(整数),它位于第一列(这就是 selectedIndexes()[0] 中的数字 0 的原因)
归档时间: |
|
查看次数: |
26502 次 |
最近记录: |