pyqt Qtablewidget如何在一列重复添加Qtoolbutton
时间: 2024-04-10 15:35:14 浏览: 184
您可以通过使用QItemDelegate来在QTableWidget的单元格中重复添加QToolButton。下面是一个示例代码,演示了如何实现这一功能:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QToolButton, QItemDelegate
from PyQt5.QtCore import Qt
class ButtonDelegate(QItemDelegate):
def __init__(self, parent=None):
super(ButtonDelegate, self).__init__(parent)
def createEditor(self, parent, option, index):
button = QToolButton(parent)
button.setText("Button")
button.clicked.connect(self.buttonClicked)
return button
def setEditorData(self, editor, index):
pass
def setModelData(self, editor, model, index):
pass
def updateEditorGeometry(self, editor, option, index):
editor.setGeometry(option.rect)
def buttonClicked(self):
button = self.sender()
# 在这里可以处理按钮点击事件的逻辑
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.tableWidget = QTableWidget(self)
self.tableWidget.setColumnCount(1)
self.tableWidget.setRowCount(5)
self.tableWidget.setItemDelegateForColumn(0, ButtonDelegate())
for row in range(5):
item = QTableWidgetItem()
self.tableWidget.setItem(row, 0, item)
self.setCentralWidget(self.tableWidget)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例中,我们创建了一个自定义的QItemDelegate子类ButtonDelegate,用于在单元格中创建QToolButton。然后在主窗口中创建一个QTableWidget,并将ButtonDelegate设置为第一列的代理。通过循环在每个单元格中添加一个QTableWidgetItem,这样就可以在一列中重复添加QToolButton了。
请注意,您可以在ButtonDelegate中的buttonClicked方法中处理按钮点击事件的逻辑。
阅读全文