2014-04-13 28 views
2

虽然自定义QTreeView小部件,其中每个项目是由不同的部件组成(combo box,line edit等),我遇到了一个问题,无法自定义标题标签(列的名称)。随着QTreeWidget()setHeaderLabels([]) ...PyQt如何设置标题标签与QTreeView

import sys, os 
from PyQt4 import QtCore,QtGui 

class TreeWidgetsItems(QtGui.QTreeView): 
    def __init__(self): 
     super(TreeWidgetsItems, self).__init__() 

     self.itemModel = QtGui.QStandardItemModel(0, 2) 
     self.setModel(self.itemModel) 

     item0 = QtGui.QStandardItem('Item 0') 
     self.itemModel.setItem(0, 0, item0) 
     item0.setCheckable(True) 

     item1 = QtGui.QStandardItem('Item 1') 
     self.itemModel.setItem(0, 1, item1) 

     item2 = QtGui.QStandardItem('Item 2') 
     self.itemModel.setItem(0, 2, item2) 

     item3 = QtGui.QStandardItem('Item 3') 
     self.itemModel.setItem(0, 3, item3) 

     lineedit1 = QtGui.QLineEdit() 
     itemIndex1 = self.itemModel.index(0, 1, QtCore.QModelIndex()) 
     self.setIndexWidget(itemIndex1, lineedit1) 

     self.combo2 = QtGui.QComboBox() 
     itemIndex2 = self.itemModel.index(0, 2, QtCore.QModelIndex()) 
     self.setIndexWidget(itemIndex2, self.combo2) 
     for i in range(5): 
      self.combo2.addItem('Item'+str(i)) 

     self.dateEdit = QtGui.QDateEdit() 
     self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime()) 
     self.dateEdit.setMaximumDate(QtCore.QDate(7999, 12, 28)) 
     self.dateEdit.setMaximumTime(QtCore.QTime(23, 59, 59)) 
     self.dateEdit.setCalendarPopup(True) 

     itemIndex3 = self.itemModel.index(0, 3, QtCore.QModelIndex()) 
     self.setIndexWidget(itemIndex3, self.dateEdit) 

     self.setColumnWidth(0, 60) 
     for i in range(1, 7): 
      self.setColumnWidth(i, 200) 

     self.show() 


if __name__ == '__main__': 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = TreeWidgetsItems() 
    window.resize(960, 240) 
    sys.exit(app.exec_()) 
+1

像这样的事情? self.itemModel.setHorizo​​ntalItem(0,QtGui.QStandardItem('Column1')) – alien

回答

3

for i in range(1, 7):循环改成这样:

for i in range(1, 7): 
    self.setColumnWidth(i, 200) 
    self.itemModel.setHeaderData(i, QtCore.Qt.Horizontal, 'Column {}'.format(i)) 
self.itemModel.setHeaderData(0, QtCore.Qt.Horizontal, 'Column {}'.format("0")) 

最后一行应该是你的循环之外。它设置你的0索引列标题。当你在你的循环中迭代1到7时,其他的将被设置。

输出看起来是这样的:

Headers are set


相关问题