1
我有一個qlistview,其編輯是通過委託在qtableview中進行的。當qtableview出現時,我希望qlistview調整其行以適應所有的qtableview。下面是代碼:如何使QListView根據編輯器大小調整其項目的大小
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()
謝謝armonge,但我真正想要的*是*調整qlistview行的大小。用你的代碼,編輯器跨越其他行,隱藏它們。並且還要感謝setCentralWidget提示。 – Tiago