2
使用QLineEdit的調色板,我們可以分配QGradient作爲其背景色:如何分配QLinearGradient作爲QTableView中的項目背景色
line = QtGui.QLineEdit()
palette = line.palette()
QRectF = QtCore.QRectF(line.rect())
gradient = QtGui.QLinearGradient(QRectF.topLeft(), QRectF.topRight())
palette.setBrush(QtGui.QPalette.Base, QtGui.QBrush(gradient))
line.setPalette(palette)
line.show()
雖然與QTableView
及其QAbstractTableModel
工作,我從模型返回了堅實的QColor
data
方法每BackgroundColorRole
請求。我寧願爲tableView「item」分配一個漸變,而不是純色。 如何分配漸變而不是純色?
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
class Model(QtCore.QAbstractTableModel):
def __init__(self):
QtCore.QAbstractTableModel.__init__(self)
self.items = [[1, 'one', 'ONE'], [2, 'two', 'TWO'], [3, 'three', 'THREE']]
def rowCount(self, parent=QtCore.QModelIndex()):
return 3
def columnCount(self, parent=QtCore.QModelIndex()):
return 3
def data(self, index, role):
if not index.isValid(): return
if role in [QtCore.Qt.DisplayRole, QtCore.Qt.EditRole]:
return self.items[index.row()][index.column()]
if role == QtCore.Qt.ForegroundRole:
return QtGui.QColor("white")
if role == QtCore.Qt.BackgroundColorRole:
return QtGui.QColor("gray")
def onClick(index):
print 'clicked index: %s'%index
tableModel=Model()
tableView=QtGui.QTableView()
tableView.setModel(tableModel)
tableView.clicked.connect(onClick)
tableView.show()
app.exec_()