如何获取QTableView列宽

2024-10-01 19:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码创建一个链接到QAbstractTableModel的单个QTableView,其中有三列:

enter image description here

为了给上一列中的项目指定一个水平的红蓝渐变,我创建了一个渐变

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_()

Tags: selfviewmodelreturndefitemscolumnwidth

热门问题