2011-01-11 32 views
1

私はqlistviewでqlistviewを作成しました。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

+0

を使用する必要がありますQMainWindowでいただきありがとうございますということで言われていることを、エディタですarmongeですが、本当に欲しいのは* qlistview行のサイズを変更することです。あなたのコードでは、エディタは他の行にまたがって隠れています。また、setCentralWidgetのヒントもありがとう。 – Tiago

関連する問題