每個報頭我可以使用不同工具提示在QTableView中
tableview = QTableView()
tableview.horizontalHeader().setToolTip("headers")
單個工具提示添加到所有標題,但我可以不同工具提示添加到每個報頭,即我需要訪問包含標頭,例如在QWidgets (不工作):
tableview.horizontalHeader().Item[0].setToolTip("header 0")
每個報頭我可以使用不同工具提示在QTableView中
tableview = QTableView()
tableview.horizontalHeader().setToolTip("headers")
單個工具提示添加到所有標題,但我可以不同工具提示添加到每個報頭,即我需要訪問包含標頭,例如在QWidgets (不工作):
tableview.horizontalHeader().Item[0].setToolTip("header 0")
QTableWidget
(它繼承QTableView
)具有能夠用來獲取的標題項目,所以你也許可以,務必要使用,而不是QTableView
方法horizontalHeaderItem(int)
?
我對這個東西也很新,但我想你需要繼承QTableView並重新實現headerData函數。這是一個工作示例。希望你可以提取你從它需要的東西:
from PyQt4 import QtGui, QtCore
import sys
class PaletteListModel(QtCore.QAbstractListModel):
def __init__(self, colors = [], parent = None):
QtCore.QAbstractListModel.__init__(self,parent)
self.__colors = colors
# required method for Model class
def rowCount(self, parent):
return len(self.__colors)
# optional method for Model class
def headerData(self, section, orientation, role):
if role == QtCore.Qt.DisplayRole:
if orientation == QtCore.Qt.Horizontal:
return QtCore.QString("Palette")
else:
return QtCore.QString("Color %1").arg(section)
if role == QtCore.Qt.ToolTipRole:
if orientation == QtCore.Qt.Horizontal:
return QtCore.QString("Horizontal Header %s Tooltip" % str(section))
else:
return QtCore.QString("Vertical Header %s Tooltip" % str(section))
# required method for Model class
def data(self, index, role):
# index contains a QIndexClass object. The object has the following
# methods: row(), column(), parent()
row = index.row()
value = self.__colors[row]
# keep the existing value in the edit box
if role == QtCore.Qt.EditRole:
return self.__colors[row].name()
# add a tooltip
if role == QtCore.Qt.ToolTipRole:
return "Hex code: " + value.name()
if role == QtCore.Qt.DecorationRole:
pixmap = QtGui.QPixmap(26,26)
pixmap.fill(value)
icon = QtGui.QIcon(pixmap)
return icon
if role == QtCore.Qt.DisplayRole:
return value.name()
def setData(self, index, value, role = QtCore.Qt.EditRole):
row = index.row()
if role == QtCore.Qt.EditRole:
color = QtGui.QColor(value)
if color.isValid():
self.__colors[row] = color
self.dataChanged.emit(index, index)
return True
return False
# implment flags() method
def flags(self, index):
return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
app.setStyle("plastique")
data = QtCore.QStringList()
data << "one" << "two" << "three" << "four" << "five"
tableView = QtGui.QTableView()
tableView.show()
red = QtGui.QColor(255,0,0)
green = QtGui.QColor(0,255,0)
blue = QtGui.QColor(0,0,255)
model = PaletteListModel([red, green, blue])
tableView.setModel(model)
sys.exit(app.exec_())
據我所看到的,你不能用QAbstractTablemodel使用QTableWidget的。有沒有解決方法或其他解決方案 –