帮我写一个Pyside2能得到目前鼠标停留在哪个QGroupBox上,并且添加一个右键菜单,此右键菜单有一个查看当前鼠标停留的哪个QGroupbox的选项的代码
时间: 2024-05-08 15:16:09 浏览: 163
pyside+pyqt实现鼠标右键菜单功能
以下是一个示例代码,可以实现在Pyside2中得到目前鼠标停留在哪个QGroupBox上,并且添加一个右键菜单,其中包括一个查看当前鼠标停留的哪个QGroupbox的选项的代码:
```python
from PySide2.QtWidgets import QApplication, QMainWindow, QGroupBox, QMenu, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建两个QGroupBox
self.group1 = QGroupBox("Group 1", self)
self.group1.setGeometry(10, 10, 100, 100)
self.group2 = QGroupBox("Group 2", self)
self.group2.setGeometry(120, 10, 100, 100)
# 连接鼠标移动事件
self.setMouseTracking(True)
self.mouseMoveEvent = self.onMouseMove
def onMouseMove(self, event):
for group in [self.group1, self.group2]:
if group.underMouse():
print("Mouse over:", group.title())
def contextMenuEvent(self, event):
# 创建右键菜单
menu = QMenu(self)
# 创建菜单项
action = QAction("查看当前鼠标停留的QGroupBox", self)
action.triggered.connect(self.showMouseOverGroup)
# 添加菜单项到菜单中
menu.addAction(action)
# 显示菜单
menu.exec_(event.globalPos())
def showMouseOverGroup(self):
for group in [self.group1, self.group2]:
if group.underMouse():
print("Current mouse over:", group.title())
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这段代码中,我们首先创建了两个QGroupBox,并将它们添加到主窗口中。然后,我们将鼠标移动事件连接到onMouseMove方法,该方法将检查鼠标是否停留在任何一个QGroupBox上,并在控制台中打印出当前鼠标停留的QGroupBox的标题。
接下来,我们实现了contextMenuEvent方法,该方法在右键点击时被调用,并创建了一个QMenu对象。我们创建了一个QAction对象,将其连接到showMouseOverGroup方法,该方法将打印出当前鼠标停留的QGroupBox的标题。我们将QAction对象添加到QMenu对象中,并在鼠标位置显示该菜单。
最后,我们实现了showMouseOverGroup方法,该方法检查当前鼠标是否停留在任何一个QGroupBox上,并在控制台中打印出当前鼠标停留的QGroupBox的标题。我们将该方法与QAction对象相关联,以便在单击菜单项时调用它。
阅读全文