怎么在qtableview里放按钮
时间: 2024-04-09 09:28:19 浏览: 74
QTableView插入各种按钮
3星 · 编辑精心推荐
在 QTableView 中放置按钮需要使用自定义的委托(Delegate)。下面是一个简单的示例代码,展示了如何在 QTableView 中的指定单元格中放置按钮:
```python
from PyQt5.QtWidgets import QApplication, QTableView, QWidget, QPushButton, QVBoxLayout, QStyledItemDelegate
from PyQt5.QtCore import Qt
class ButtonDelegate(QStyledItemDelegate):
def __init__(self, parent):
super(ButtonDelegate, self).__init__(parent)
def paint(self, painter, option, index):
if index.column() == 0: # 指定需要放置按钮的列(这里是第一列)
button = QPushButton("Click")
button.setGeometry(option.rect) # 设置按钮的位置和尺寸
button.setParent(option.widget)
button.show()
else:
super(ButtonDelegate, self).paint(painter, option, index)
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.tableview = QTableView(self)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.tableview)
self.model = QStandardItemModel(self)
self.model.setColumnCount(3)
self.model.setRowCount(3)
self.tableview.setModel(self.model)
delegate = ButtonDelegate(self.tableview)
self.tableview.setItemDelegate(delegate)
self.setGeometry(100, 100, 300, 200)
self.show()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
app.exec_()
```
运行上述代码后,你会看到一个带有按钮的 QTableView。在这个例子中,按钮被放置在第一列的每个单元格中。你可以根据需要修改委托的逻辑,以控制按钮的显示和行为。
阅读全文