qt 点击qaction下拉箭头显示菜单时,改变菜单位置
时间: 2023-07-13 14:08:55 浏览: 274
可以通过 `QMenu` 的 `popup` 方法手动弹出菜单并设置位置,具体步骤如下:
1. 获取 `QAction` 对应的 `QMenu`,例如:
``` python
action = QAction("Menu", self)
menu = QMenu(self)
menu.addAction("Option 1")
menu.addAction("Option 2")
action.setMenu(menu)
```
2. 连接 `QAction` 的 `triggered` 信号到槽函数中,例如:
``` python
action.triggered.connect(self.show_menu)
```
3. 在槽函数中手动弹出菜单并设置位置,例如:
``` python
def show_menu(self):
action = self.sender()
menu = action.menu()
pos = action.parentWidget().mapToGlobal(action.geometry().bottomLeft())
menu.popup(pos)
```
其中,`sender()` 方法获取发送信号的对象即 `QAction`,`menu()` 方法获取该 `QAction` 对应的 `QMenu`,`parentWidget()` 方法获取该 `QAction` 所在的 widget,`mapToGlobal()` 方法将 widget 中的坐标转换为全局坐标,`geometry()` 方法获取该 `QAction` 在 widget 中的几何信息,`bottomLeft()` 方法获取该 `QAction` 左下角的坐标作为菜单的位置。
这样就可以改变菜单位置了。
阅读全文