1
누구도 QTableView에 수직 및 수평 헤더를 추가하는 방법을 알고 있습니까? 나는 지금 몇 시간 동안이 작업을 해왔다. 그리고 나는 그것을 알아낼 수 없다. (-하지만, 난 당신이 아이디어를 얻을 희망 미안 해요, 난 Excel에서했다) : 현재 결과 : 그러나 PYQT : 수평 및 수직 헤더
, 나는이를 생산하기 위해 노력하고 있습니다.
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_())
내가 모델 클래스에 headerData 추가 :
여기 내 코드입니다. 수직 헤더를 작동시킬 수는 있지만 수평은 사용할 수 없습니다.
감사합니다. 나는 모델 - 뷰 프로그래밍을 사용하고있다. 또한, 내 코드는 원래 게시물에 게시됩니다. 모델 클래스에서 setHeaderData를 사용해 보았습니다. 그러나 작동하지 않습니다. –
원본 코드를 편집했습니다. Vertical Headers를 사용할 수 있었지만 Horizontal Headers에는 여전히 문제가 있습니다. –
아, 답변이 업데이트되었습니다. 'setHeaderData'는 사용자에 의한 헤더 편집을 지원합니다. – Schollii