我用:
创建一个表和一个按钮self.table = QtGui.QTableWidget()
self.table.setObjectName('table')
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.table.setDragDropMode(False)
self.verticalLayout.addWidget(self.table)
self.btn_del = QtGui.QPushButton(self)
self.btn_del.setObjectName('btn_del')
self.btn_del.setEnabled(False)
QtCore.QObject.connect(self.btn_del, QtCore.SIGNAL('clicked()'), self.del_feat)
当用户在表格中标记行并单击按钮时,所选行应为彩色。因此我用这个:
def del_feat(self):
del_list = []
for i in self.table.selectionModel().selectedRows():
del_list.append(i.row())
col = len(self.columns)
brush_gray = QtGui.QBrush(QtGui.QColor(232,232,232))
brush_gray.setStyle(QtCore.Qt.SolidPattern)
for r in del_list[:]:
for i in range(col):
self.ui_c.table.item(r,i).setBackground(brush_gray)
着色工作但不知何故,当我使用这种着色方法时,单击用于选择行的单元格的值被写入鼠标结束的最后一个单元格。当细胞没有染色时,只选择没有任何反应。我已经用setDragDropMode(False)
尝试了它,但它没有效果。任何想法如何解决这个问题?
TIA Martin
答案 0 :(得分:0)
尝试断开cellChanged信号(如果你正在使用它)并再次连接它,这对我有用......就像这样:
self.disconnect(self.table, QtCore.SIGNAL("cellChanged(int, int)"),self.someMethod)
...... do setBeckground stuff...
self.connect(self.table, QtCore.SIGNAL("cellChanged(int, int)"),self.someMethod)
或禁用/启用mainWindow你的表是... 我希望有帮助。