2011-01-11 9 views
1

위임자가 qtableview에서 편집 한 qlistview가 있습니다. 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() 

답변

0

크기를 조정하려고한다 위젯 에디터는

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.resize(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): 
     super(MyApp, self).__init__(parent) 
     self.setMinimumSize(200, 200) 
     self.listview = QtGui.QListView() 
     self.listview.setItemDelegate(MyDelegate()) 
     listmodel = QtGui.QStandardItemModel() 

     self.setCentralWidget(self.listview) 
     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() 

다른 것은 당신이 setCentralWidget를 사용한다 QMainWindow와

+0

감사합니다 것입니다 말했다되고 있음을,있다 : 여기에 코드입니다 armonge,하지만 실제로 원하는 것은 * qlistview 행의 크기를 조정하는 것입니다. 코드를 사용하면 편집기가 다른 행에 걸쳐 숨겨져 있습니다. 그리고 setCentralWidget 팁을 주셔서 감사합니다. – Tiago

관련 문제