2011-07-15 15 views
1

こんにちは、QListWidgetで動的に行を作成

私はカスタストウィジェットを作成したいと思います。いくつか考えて助けてください。
私はいくつかの情報を表示するListwidgetを作成し、特定の行をクリックすると、選択された行のすぐ下に新しい領域(行またはテキストの編集)を作成し、その下の他の行を引っ張ってその行に対応する詳細を表示する必要があります選択された行は、作成された新しい領域の後にダウンします。
添付ファイルで行Nancyをクリックすると(行と見なされます)、彼女の詳細が選択された行の下に表示されます。あなたが使用したいことはQTreeViewあるこの

enter image description here

答えて

3

に助けてください。テキストとアイコンで行を表示することができます。 テーブルのQStandardItemModelを定義する必要があります。これにより、列定義が与えられます。

以下は、同様のアプリで書いたクラスの3つの関連する機能です。私は自分の行にイメージを使用する必要はなかったので、自分自身でその部分を理解しなければならないことに注意してください。

def drawPeopleListBox(self): 
    header = ["Picture","First Name","Last Name","Title","Address", "City", "Region"] 
    self.model = QStandardItemModel(0, len(header), self) 
    for i in range(len(header): 
     self.model.setHeaderData(i, Qt.Horizontal, self.selectionDict[i+1].upper()) 

    self.itemList = QTreeView() 
    self.itemList.setRootIsDecorated(False) 
    self.itemList.setAlternatingRowColors(True) 
    self.itemList.setSortingEnabled(False) 
    self.itemList.setModel(self.model) 
    self.itemList.NoEditTriggers=True 

    #self.itemList.clicked[QModelIndex].connect(self.onRowClick) 
    self.itemList.clicked.connect(self.onRowClick) 
    self.itemList.setCursor(Qt.PointingHandCursor) 

    self.itemList.setColumnWidth(0,70) 
    self.itemList.setColumnWidth(1,140) 
    self.itemList.setColumnWidth(2,70) 
    self.itemList.setColumnWidth(3,180) 
    self.itemList.setColumnWidth(4,100) 
    self.itemList.setColumnWidth(5,100) 
    self.itemList.setColumnWidth(6,100) 

    self.populateList(self.userDataList) 

def populateList(self, userDataList): 
     row=[] 
     for user in userDataList: 
      for attrib in user: 
       row.append(QStandardItem(attrib)) 

      for item in row: 
       item.setEditable(False) 

      self.model.appendRow(row) 

def onRowClick(self, index): 
    print index.row() 
    ''' 
    Here you need to resize the clicked row height. Also resise the image. 
    Or insert another row that matches your design requirement. 
    self.model.insertRow(rowNumber, listOfQStandardItems) 
    '''   
    self.repaint() 
+0

私は自分自身を助けることができます自己タイプ – Sijith

+0

自己はPythonクラスの内部要素です、laymanの答えは、それは保護されたクラス要素のPythonの同等です。さて、それは私には意味をなさない出来事ではなく、私はそれを書きました。私はこれを説明するのがひどく、あなたがPythonでクラッシュコースを取る必要があるように思えます。 –

1

カスタムデリゲートを使用して行を表示できます。私は代表者が選出されたかどうかを知っていると思います。これを使用して、選択されていない行を通常通り描画し、選択した行についてさらに情報を描画します。この問題は、選択時にウィジェットのサイズを変更できるかどうかわかりません。そうでなければ、QTreeViewソリューションはまだ動作するはずです。

関連する問題