【问题标题】:pyqt4: QTableWidget cell coloring causes drag-and-droppyqt4:QTableWidget 单元格着色导致拖放
【发布时间】:2013-06-16 17:42:20
【问题描述】:

我创建了一个表格和一个按钮:

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 马丁

【问题讨论】:

    标签: python pyqt4 qtablewidget


    【解决方案1】:

    尝试断开 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... 我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 2012-04-05
      • 2013-01-01
      • 1970-01-01
      • 2013-01-09
      • 2011-08-19
      • 2016-05-08
      相关资源
      最近更新 更多