2013-01-03 11 views
5

में QTableView हैडर नाम सेट करने मैं जानना चाहता हूँ मैं कैसे QTableviewकैसे PyQt4

में कस्टम हेडर नाम सेट जब मैं एक QTableview बनाने मैं 1,2,3 के रूप में स्तंभ और पंक्ति हेडर नाम प्राप्त कर सकते हैं चाहता हूँ, 4। मैं जानना चाहता हूं कि मैं अपना खुद का कॉलम और हेडर टाइटल कैसे सेट कर सकता हूं।


मैं solution के रूप में आवश्यक हो गया है, उम्मीद है कि यह कुछ एक आप अपने खुद के मॉडल के साथ एक QTableView उपयोग कर रहे हैं, जो एक ही स्थिति

उत्तर

11

भर आता है आप में headerData() विधि लागू करने की आवश्यकता मदद कर सकता है हेडर के लिए डेटा वापस करने के लिए मॉडल। कॉलम शीर्षलेख दिखाने के लिए यहां एक स्निपेट है - हेडर टेक्स्ट बदलने के लिए 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()' से लिंक कर रहा हूं। मैं 'setHeaderData() ' – Rao

+0

@PBLNarasimhaRao के साथ हेडर सेट करने में सक्षम हूं, वास्तव में' हेडरडाटा()' 'QAbstractItemModel' का वर्चुअल फ़ंक्शन है, और आपका 'QStandardItemModel'' QAbstractItemModel' का उप-वर्ग है। कृपया 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 एक pastebin लिंक कि मॉडरेटर द्वारा नष्ट कर दिया गया में तैनात) के रूप में निम्नलिखित कोड का उत्पादन:

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_()) 
संबंधित मुद्दे