2014-09-23 554 views
0

下面的代碼創建了一個帶有標題和三個QStandardItem s的簡單QTableView問題:如何使它的頭有標註爲 「0柱」,「列1" 和 「3欄」 三列如何使用QTableView創建列標題及其標籤

enter image description here

import os,sys 
from PyQt4 import QtCore, QtGui 
app=QtGui.QApplication(sys.argv) 
class Window(QtGui.QTableView): 
    def __init__(self): 
     super(Window, self).__init__() 
     header=QtGui.QHeaderView(QtCore.Qt.Horizontal, self) 
     self.setHorizontalHeader(header) 
     model=QtGui.QStandardItemModel() 
     for i in range(3): 
      model.appendRow(QtGui.QStandardItem('Item %s'%i)) 
     self.setModel(model) 
     self.show() 

window=Window() 
sys.exit(app.exec_()) 

回答

2

使用

model = QtGui.QStandardItemModel(0,3) # three columns 

model.setHorizontalHeaderLabels([ "Column 0", "Column 1", "Column 3"]) 
+0

'model.setHorizo​​ntalHeaderLabels([「Column 0」,「Column 1」,「Column 3」])'謝謝! – alphanumeric 2014-09-23 17:56:24

+0

是的,對不起。此外,你可以使用QTableWidget,可能會更簡單。 – mdurant 2014-09-23 17:57:05

+0

我必須使用'model'來保持同步。 QTableWidget不支持它。再次感謝! – alphanumeric 2014-09-23 18:27:57

1

你也可以用這個:

bool QAbstractItemModel.setHeaderData (self, int section, Qt.Orientation orientation, QVariant value, int role = Qt.EditRole) 

但它需要設置部分和方向。

優勢:

您可以設置角色,例如Qt::DecorationRole,它允許您設置圖像到您的標題。您可以結合不同的角色並獲得更多的美化效果。例如,您可以使用Qt::DisplayRoleQt::EditRole將簡單文字添加到圖像。正如你所看到的那樣,這是更靈活的方法。

+0

謝謝你讓我知道!我會在有機會的時候嘗試。 – alphanumeric 2014-09-23 18:29:17

相關問題