带有一列图像的 QTableView

Joh*_*nna 5 python image pyqt qtableview

我有一个 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
Run Code Online (Sandbox Code Playgroud)

这段代码的灵感来自我在另一个论坛上发现的应该可以工作的东西。但是它对我没有任何作用,只会减慢我的代码的执行速度。

知道为什么它不起作用吗?如果你有一个代表的例子,我也会很感激!

感谢您的关注

已解决:我让它与自定义委托一起工作。如果有人感兴趣,这是我的代码:

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) 
Run Code Online (Sandbox Code Playgroud)

Ste*_*rry 0

我认为您不需要将像素图封装在标签或图像中。尝试只返回像素图。

if index.column() == 4:
    if role == QtCore.Qt.DecorationRole:            
        path = "path/to/my/picture.jpg"
        pixmap = QtGui.QPixmap(path) 
        return pixmap
Run Code Online (Sandbox Code Playgroud)