pyqt5中实现QTableWidget 表格右键菜单功能
时间: 2024-03-27 09:38:05 浏览: 153
pyqt5界面右键菜单中文汉化(QLineEdit、QTextEdit)
要在QTableWidget中实现右键菜单功能,可以使用QMenu和contextMenuEvent()事件。具体实现步骤如下:
1.创建QMenu对象并添加菜单项。
```python
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
```
2.在QTableWidget的contextMenuEvent()事件中,设置菜单的位置,并显示菜单。
```python
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
if self.itemAt(event.pos()):
menu.exec_(event.globalPos())
```
完整代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QMenu
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table = QTableWidget(self)
self.table.setRowCount(4)
self.table.setColumnCount(2)
self.table.setHorizontalHeaderLabels(["Name", "Age"])
self.table.setItem(0, 0, QTableWidgetItem("Tom"))
self.table.setItem(0, 1, QTableWidgetItem("20"))
self.table.setItem(1, 0, QTableWidgetItem("Jerry"))
self.table.setItem(1, 1, QTableWidgetItem("18"))
self.table.setItem(2, 0, QTableWidgetItem("Lucy"))
self.table.setItem(2, 1, QTableWidgetItem("22"))
self.table.setItem(3, 0, QTableWidgetItem("John"))
self.table.setItem(3, 1, QTableWidgetItem("25"))
self.setCentralWidget(self.table)
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
if self.table.itemAt(event.pos()):
menu.exec_(event.globalPos())
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这样就可以在QTableWidget中实现右键菜单功能了。
阅读全文