Ich habe eine qlistview, deren Bearbeitung in einer qtableview, mittels eines Delegaten gemacht. Wenn die qtableview angezeigt wird, möchte ich, dass die Größe der Zeile in der qlistview so geändert wird, dass sie auf alle von qtableview passt. Hier ist der Code:Wie man eine QListView Größe seiner Elemente entsprechend Editor Größe
import sys
from PyQt4 import QtGui, QtCore
class MyDelegate(QtGui.QStyledItemDelegate):
def createEditor(self, parent, option, index):
mtview = QtGui.QTableView(parent)
mtview.verticalHeader().setVisible(False)
mtview.horizontalHeader().setVisible(False)
mtmodel = QtGui.QStandardItemModel()
mtview.setModel(mtmodel)
return mtview
def setEditorData(self, editor, modelindex):
editor.parent().setMinimumSize(400,400)
mtmodel = editor.model()
for x in range(5):
for y in range(5):
mtmodel.setItem(x,y,QtGui.QStandardItem("%s, %s" % (x, y)))
class MyApp(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.resize(200, 200)
self.listview = QtGui.QListView(self)
self.listview.setGeometry(QtCore.QRect(0,0,200,200))
self.listview.setItemDelegate(MyDelegate())
listmodel = QtGui.QStandardItemModel()
t = '123456789'
for x in range(10):
itemmodel=QtGui.QStandardItem(t)
listmodel.appendRow(itemmodel)
self.listview.setModel(listmodel)
def main():
app = QtGui.QApplication(sys.argv)
mw = MyApp()
mw.show()
app.exec_()
if __name__=="__main__":
main()
Danke armonge, aber was ich wirklich will * ist * die Größe von qlistview row. Mit Ihrem Code überspannt der Editor die anderen Zeilen und versteckt sie. Und danke auch für den setCentralWidget Tipp. – Tiago