我有一个QTableView用于以网格形式显示数据库的某些信息。其中一个字段是指向图像的路径,我想在表格中显示这些图像。
我尝试使用代理来实现这个功能,但我不太熟悉它们,也无法做到任何事情。我还尝试使用角色:
if index.column() == 4:
if role == QtCore.Qt.DecorationRole:
label = QtGui.QLabel()
path = "path/to/my/picture.jpg"
image = QtGui.QImage(str(path))
pixmap = QtGui.QPixmap.fromImage(image)
label.setPixmap(pixmap)
return label
这段代码受到我在另一个论坛发现的灵感,原本应该可以工作。然而,它对我没有任何作用,只会减慢我的代码执行速度。
有什么想法为什么不起作用吗?如果您有使用委托的示例,我也会很感激!
谢谢关注
已解决: 我通过自定义委托使其正常工作了。以下是我的代码,如果有人感兴趣:
class ImageDelegate(QtGui.QStyledItemDelegate):
def __init__(self, parent):
QtGui.QStyledItemDelegate.__init__(self, parent)
def paint(self, painter, option, index):
painter.fillRect(option.rect, QtGui.QColor(191,222,185))
# path = "path\to\my\image.jpg"
path = "araignee_de_mer.jpg"
image = QtGui.QImage(str(path))
pixmap = QtGui.QPixmap.fromImage(image)
pixmap.scaled(50, 40, QtCore.Qt.KeepAspectRatio)
painter.drawPixmap(option.rect, pixmap)