我想在 QTableWidgetItem 中的文本旁边设置图标。
我尝试了 styledItemDelegate 的 initStyleOption。它设置在 qtablewidgetitem 的末尾。
def initStyleOption(self, option: QStyleOptionViewItem, index) -> None:
if index.column() == 0:
option.decorationPosition = QStyleOptionViewItem.Right
return super().initStyleOption(option, index)
但我想要这个例子。
如果我想在单击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_())