pyqt5 QTableWidget 设置右键后不取消
时间: 2024-02-05 09:05:16 浏览: 126
可以通过设置QTableWidget的上下文菜单策略来实现右键点击后不取消的效果。具体步骤如下:
1. 创建一个自定义的QTableWidget子类,并重写其contextMenuEvent方法,用于处理右键菜单事件。
2. 在contextMenuEvent方法中创建并显示自定义的右键菜单。
3. 在右键菜单的每个动作中,设置setCheckable(True)以使其可选中,并设置setChecked(True)以保持选中状态。
4. 在每个动作的triggered信号中,添加相应的处理逻辑。
下面是一个示例代码:
```python
from PyQt5.QtWidgets import QTableWidget, QMenu, QAction
class CustomTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showContextMenu)
def showContextMenu(self, pos):
menu = QMenu(self)
action1 = QAction("Action 1", self)
action1.setCheckable(True)
action1.setChecked(True)
action1.triggered.connect(self.action1Clicked)
menu.addAction(action1)
action2 = QAction("Action 2", self)
action2.setCheckable(True)
action2.setChecked(True)
action2.triggered.connect(self.action2Clicked)
menu.addAction(action2)
menu.exec_(self.mapToGlobal(pos))
def action1Clicked(self):
# 处理Action 1的逻辑
pass
def action2Clicked(self):
# 处理Action 2的逻辑
pass
```
你可以将上述代码添加到你的PyQt5应用程序中,并使用CustomTableWidget替换原来的QTableWidget,以实现右键点击后不取消的效果。
阅读全文