QT如何在QTableWidget中的列表头添加ToolButton控件,请给我完整代码
时间: 2023-07-15 14:13:24 浏览: 110
可以通过 `setCellWidget()` 方法将 `QToolButton` 控件添加到列表头。以下是一个完整的示例:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QHeaderView, QToolButton, QMessageBox
from PyQt5.QtCore import Qt
class MyTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.initUI()
def initUI(self):
# 设置行列数
self.setRowCount(4)
self.setColumnCount(2)
# 设置列表头
header = self.horizontalHeader()
header.setSectionResizeMode(QHeaderView.Stretch)
# 添加 ToolButton 控件到列表头
button = QToolButton(self)
button.setText("Click me")
button.clicked.connect(self.onButtonClick)
header.setSectionWidget(0, button)
# 添加单元格
self.setItem(0, 0, QTableWidgetItem("Item 1"))
self.setItem(0, 1, QTableWidgetItem("Value 1"))
self.setItem(1, 0, QTableWidgetItem("Item 2"))
self.setItem(1, 1, QTableWidgetItem("Value 2"))
self.setItem(2, 0, QTableWidgetItem("Item 3"))
self.setItem(2, 1, QTableWidgetItem("Value 3"))
self.setItem(3, 0, QTableWidgetItem("Item 4"))
self.setItem(3, 1, QTableWidgetItem("Value 4"))
def onButtonClick(self):
QMessageBox.information(self, "Button clicked", "You clicked the button")
if __name__ == '__main__':
app = QApplication([])
table = MyTableWidget()
table.show()
app.exec_()
```
在这个例子中,我们添加了一个文本为 "Click me" 的 `QToolButton` 控件到列表头的第一列。当用户点击该按钮时,会弹出一个消息框。
阅读全文