【发布时间】:2017-11-07 14:17:10
【问题描述】:
我有一个 QTableView 显示来自自定义模型的数据。对于每个单元格的版本,我都有一个QItemDelegate。视图的一列有一个由QLineEdit 和QCheckBox 组成的自定义小部件。当我单击此列的单元格时,将显示编辑器并且它可以工作,但它不适合表格单元格。此外,当我放大一行并单击单元格时,我可以看到小部件后面的单元格的数据。
有没有办法让我的小部件表现得像视图上QItemDelegate 的普通编辑小部件?即创建时它使用单元格的所有垂直空间?
这是我的小部件(简化版):
class MyWidget(QtGui.QWidget):
def __init__(self, parent = None):
super(MyWidget, self).__init__(parent)
self.lineEdit = QtGui.QLineEdit(parent)
self.checkBox = QtGui.QCheckBox(parent)
self.checkBox.setChecked(False)
self.gridLayout = QtGui.QGridLayout(self)
self.gridLayout.setSpacing(3)
self.gridLayout.addWidget(self.lineEdit, 0, 0)
self.gridLayout.addWidget(self.checkBox, 0, 1)
我的代表(简体):
class MyDelegate(QtGui.QItemDelegate):
def __init__(self, parent = None):
super(MyDelegate, self).__init__(parent)
def createEditor(self, parent, option, index):
return MyWidget(parent)
def setModelData(self, editor, model, index):
pass
def setEditorData(self, editor, model, index):
pass
【问题讨论】:
标签: python layout pyqt4 pyside qitemdelegate