PySide:如何在QTableWidget中放大图像?

2024-09-30 12:25:19 发布

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

我对PySide QTableWidget有问题。我需要添加在所有行图像预览的第一列。我尝试使用QIcon添加以下内容:

library_table.insertRow(index)
library_table.setItem(index, 1, QTableWidgetItem(file))
image = QIcon(self.sub_ad + file)
library_table.setItem(index, 0, QTableWidgetItem(image, ""))

但图像很小。你知道吗

prev

我试图使用QSize,QPixmap等没有任何成功,大小仍然是一样的。我怎样才能把这张照片放大?你知道吗


Tags: 图像imageselfindexlibrarytableadfile
1条回答
网友
1楼 · 发布于 2024-09-30 12:25:19

一个简单的解决方案是使用setItemDelegateForColumn()方法在QTableWidget中建立一个委托,在该委托中调整图标的大小并进行设置:

from PySide import QtCore, QtGui


class IconDelegate(QtGui.QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super(IconDelegate, self).initStyleOption(option, index)
        option.decorationSize = option.rect.size()


class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        table_widget = QtGui.QTableWidget()
        self.setCentralWidget(table_widget)
        table_widget.setColumnCount(2)

        table_widget.verticalHeader().setDefaultSectionSize(80)

        for index, file in enumerate(("clear.png", "butterfly.png")):
            table_widget.insertRow(table_widget.rowCount())
            item1 = QtGui.QTableWidgetItem(QtGui.QIcon(file), "")
            item2 = QtGui.QTableWidgetItem(file)
            table_widget.setItem(index, 0, item1)
            table_widget.setItem(index, 1, item2)

        delegate = IconDelegate(table_widget)
        table_widget.setItemDelegateForColumn(0, delegate)


if __name__ == '__main__':
    import sys

    app = QtGui.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >

    热门问题