qt 设置qaction的下拉菜单靠近右侧
时间: 2023-07-22 14:05:30 浏览: 201
QT-04-qt菜单处理 QMenu及QAction的组合使用
5星 · 资源好评率100%
可以通过设置 `QAction` 的 `setMenu()` 函数来设置下拉菜单,然后在菜单弹出前获取菜单的 `QMenu` 对象,并调用其 `popup()` 方法弹出菜单。要将下拉菜单靠近右侧,可以使用 `QMenu` 对象的 `exec()` 方法,同时指定一个 `QPoint` 对象,该对象表示菜单弹出位置相对于父窗口的坐标。
以下是示例代码:
```c++
QAction* action = new QAction("Action", this);
QMenu* menu = new QMenu(this);
menu->addAction("SubAction1");
menu->addAction("SubAction2");
action->setMenu(menu);
connect(action, &QAction::triggered, [=]() {
QPoint pos = action->parentWidget()->mapToGlobal(action->geometry().bottomRight());
menu->exec(pos);
});
```
在上面的代码中,我们将 `QAction` 对象的下拉菜单设置为 `QMenu` 对象,并在触发 `QAction` 时获取菜单的 `QMenu` 对象并调用 `exec()` 方法弹出菜单。要将菜单靠近右侧,我们使用 `action->parentWidget()->mapToGlobal(action->geometry().bottomRight())` 获取 `QAction` 相对于屏幕的右下角坐标,然后将该坐标作为参数传递给 `exec()` 方法。
阅读全文