下面的代码创建一个链接到QAbstractTableModel
的单个QTableView
,其中有三列:
为了给上一列中的项目指定一个水平的红蓝渐变,我创建了一个渐变
gradient = QtGui.QLinearGradient(0, 0, COLUMN_WIDTH, 0)
为了将梯度分成两半(一个涂成红色,另一个涂成蓝色),我需要提供
QLinearGradient
具有精确的COLUMN_WIDTH
值。在
如何获得COLUMN_WIDTH
?在
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
class Model(QtCore.QAbstractTableModel):
def __init__(self, parent=None):
super(Model, self).__init__(parent)
self.items = [['Row%s Col%s'%(row,col) for col in range(3)] for row in range(5)]
def rowCount(self, parent=None):
return len(self.items)
def columnCount(self, parent=None):
return len(self.items[0])
def data(self, index, role=QtCore.Qt.DisplayRole):
row = index.row()
column = index.column()
if role == QtCore.Qt.DisplayRole:
if 0 <= row < self.rowCount() and 0 <= column < self.columnCount():
return self.items[row][column]
if role == QtCore.Qt.BackgroundRole and column==2:
COLUMN_WIDTH = 50
gradient = QtGui.QLinearGradient(0, 0, COLUMN_WIDTH, 0)
gradient.setColorAt(0.5, QtGui.QColor('red'))
gradient.setColorAt(0.5001, QtGui.QColor('blue'))
brush = QtGui.QBrush(gradient)
return brush
view = QtGui.QTableView()
model = Model(view)
view.setModel(model)
view.show()
app.exec_()
columnWidth()
是QTableView
的属性:相关问题 更多 >
编程相关推荐