2013-01-03 8 views
5

にQTableViewヘッダー名を設定する方法を私は、私は1,2,3として列と行ヘッダ名を取得QTableviewを作成するとき、私はQTableviewはPyqt4

でカスタムヘッダー名を設定することができます方法を知りたいです4。 自分の列とヘッダーのタイトルを設定する方法を知りたい


私は、必要に応じて、solutionを持って、それはあなたがあなたがheaderData()メソッドを実装する必要があり、独自のモデルとQTableViewを使用している場合は、同じ状況

答えて

11

出くわすいくつかのいずれかを助けることを願っヘッダーのデータを返すモデル。ここでは、見出しだけを表示するスニペットを使用して、header_labelsの値を変更してヘッダーテキストを変更します。

class TableModel(QAbstractTableModel): 

    header_labels = ['Column 1', 'Column 2', 'Column 3', 'Column 4'] 

    def __init__(self, parent=None): 
     QAbstractTableModel.__init__(self, parent) 

    def headerData(self, section, orientation, role=Qt.DisplayRole): 
     if role == Qt.DisplayRole and orientation == Qt.Horizontal: 
      return self.header_labels[section] 
     return QAbstractTableModel.headerData(self, section, orientation, role) 
+2

私はとして '' QtGui.QStandardItemModel()を使用しています私は 'QtGui.QTableView()'にリンクしています。実際に 'headerData()'は 'QAbstractItemModel'の仮想関数であり、' QStandardItemModel'は 'QAbstractItemModel'のサブクラスであり、' setHeaderData() ' – Rao

+0

@PBLNarasimhaRaoでヘッダを設定することができます。 http://srinikom.github.io/pyside-docs/PySide/QtCore/QAbstractItemModel.html#PySide.QtCore.PySide.QtCore.QAbstractItemModel.headerData/QAbstractItemModel.html#PySide.QtCore.PySide.QtCore.QAbstractItemModelを確認してください。 headerData](ここ) –

-1

オリジナルポスターは、(orginally司会者によって削除されましたペーストビンリンクに掲載)ソリューションとして、次のコードを生成:

from PyQt4 import QtCore, QtGui 

class myWindow(QtGui.QMainWindow): 

    def __init__(self, parent=None): 
     super(myWindow, self).__init__(parent) 
     self.centralwidget = QtGui.QWidget(self) 
     self.view   = QtGui.QTableView(self.centralwidget) 
     self.view.setSortingEnabled(True) 
     self.gridLayout = QtGui.QGridLayout(self.centralwidget) 
     self.gridLayout.addWidget(self.view, 1, 0, 1, 3) 

     self.setCentralWidget(self.centralwidget) 

     self.model = QtGui.QStandardItemModel(self) 

     for rowName in range(3) * 5: 
      self.model.invisibleRootItem().appendRow(
       [ QtGui.QStandardItem("row {0} col {1}".format(rowName, column)) 
        for column in range(3) 
        ] 
       ) 
     for column in range(3): 
      self.model.setHeaderData(column, QtCore.Qt.Horizontal, 
             'Column %d' % int(column+1)) 
      for row in range(3 * 5): 
       self.model.setHeaderData(row, QtCore.Qt.Vertical, 
              'Row %d' % int(row+1)) 

     self.proxy = QtGui.QSortFilterProxyModel(self) 
     self.proxy.setSourceModel(self.model) 

     self.view.setModel(self.proxy) 

if __name__ == "__main__": 
    import sys 

    app = QtGui.QApplication(sys.argv) 
    main = myWindow() 
    main.show() 
    main.resize(400, 600) 
    sys.exit(app.exec_())