1
誰もQTableViewに垂直および水平ヘッダーを追加する方法を知っていますか?私はこれを数時間今作業しており、私はそれを把握していないようです。 現在の結果: PYQT:水平および垂直ヘッダー
しかし、私はこれを生産しようとしています:(申し訳ありませんが、私はExcelでそれをやった - しかし、私はあなたがアイデアを得る願っています)。ここで
私のコードです:
from PyQt4 import QtCore, QtGui, uic
import sys
try:
from PyQt4.QtCore import QString
except ImportError:
QString = str
SYSTEM=0
class inovaTableModel(QtCore.QAbstractTableModel):
def __init__(self, data = [[]], headers=[], parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.__data = data
self.__headers = headers
def rowCount(self, parent):
return len(self.__data)
def columnCount(self, parent):
return len(self.__data[0])
def flags(self, index):
return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
def data(self, index, role):
if role == QtCore.Qt.EditRole:
row = index.row()
column = index.column()
return self.__data[row][column]
if role == QtCore.Qt.ToolTipRole:
row = index.row()
column = index.column()
return self.__data[row][column]
if role == QtCore.Qt.DisplayRole:
row = index.row()
column = index.column()
return self.__data[row][column]
def setData(self, index, value, role = QtCore.Qt.EditRole):
if role ==QtCore.Qt.EditRole:
row = index.row()
column = index.column()
self.dataChanged.emit(index, index)
return self.__data[row][column]
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return QString("X","Y","Z")
if orientation == QtCore.Qt.Vertical:
return QString("List ") + QString(section)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
app.setStyle("plastique")
data = ["one", "two", "three",]
tableData_alpha = [
["5","1"],
["10", "3"],
]
headers = ["Y", "X", "Z"]
model = inovaTableModel(tableData_alpha)
tableView = QtGui.QTableView()
tableView.show()
tableView.setModel(model)
sys.exit(app.exec_())
Iは、モデルクラスにheaderDataを追加しました。私は垂直ヘッダーを動作させることができますが、水平方向のヘッダーは使用できません。ここでの結果は次のとおりです。
ご回答ありがとうございます。私はモデルビュープログラミングを使用しています。また、私のコードは元の投稿に掲載されています。モデルクラスでsetHeaderDataを使ってみました。しかし、それは動作していません。 –
オリジナルのコードを編集しました。私は垂直ヘッダーを動作させることができましたが、水平ヘッダーでは何かが間違っています。 –
ああ、回答が更新されました。 'setHeaderData'は、ユーザによるヘッダの編集をサポートするためのものです。 – Schollii