如何改变QTableWidget中QIcon的位置?

问题描述 投票:0回答:0

我想在 QTableWidgetItem 中的文本旁边设置图标。

我尝试了 styledItemDelegate 的 initStyleOption。它设置在 qtablewidgetitem 的末尾。

enter image description here

def initStyleOption(self, option: QStyleOptionViewItem, index) -> None:
    if index.column() == 0:
        option.decorationPosition = QStyleOptionViewItem.Right
    return super().initStyleOption(option, index)

但我想要这个例子。

enter image description here

如果我想在单击QTableWidgetItem中的QpushButton时将QIcon设置在文本旁边,我该怎么办?

↓ 我的测试代码:

import sys
from PySide2.QtGui import *
from PySide2.QtWidgets import *


class MyApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 300, 500, 500)

        # QTableWidget
        self.tableWidget = QTableWidget(self)
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setMinimumSize(400, 400)

        # QIcon
        self.icon: QIcon = QIcon("pencil.png")
        self.icon2: QIcon = QIcon("Check.png")

        # pushButton
        self.button = QPushButton(self)
        self.button.setGeometry(450, 450, 50, 50)
        self.button.setText('Edit')
        self.button.clicked.connect(self.markItem)
        self.show()

        for i in range(3):
            self.tableWidget.insertRow(i)
            for j in range(2):
                if j == 1:
                    self.tableWidget.setItem(i, j, QTableWidgetItem(self.icon2, '0'))
                else:
                    self.tableWidget.setItem(i, j, QTableWidgetItem(QIcon(), f"{i * 58}"))

    def setIcon(self) -> None:
        tableWidgetItem: QTableWidgetItem = self.tableWidget.currentItem()
        col = tableWidgetItem.column()
        if col == 0:
            tableWidgetItem.setIcon(self.icon)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())
python qt pyqt pyqt5 pyside2
© www.soinside.com 2019 - 2024. All rights reserved.