设置 Qt QPushButton 弹出菜单的位置(向右)

2024-01-09

我正在为 Qt 按钮小部件编写弹出菜单。每当单击按钮时,就会弹出一个菜单(在按钮下方)。

默认情况下,弹出菜单位于下方左侧。

有没有办法让弹出菜单在按钮下方的右侧弹出?

没有设置位置的功能,所以我想知道是否有一些复杂的方法可以做到这一点?

这是一些代码(用于弹出菜单):

QMenu *menuMode = new QMenu(this);
    min = menu ->addAction("In");
    mout = menu ->addAction("out");
ui->pushButtonMode->setMenu(menuMode);   //I am writing in MainWindow, that's there is ui

这可以通过子类化 QMenu 并将弹出菜单移动到您想要的位置来完成showEvent:

弹出菜单.h

#ifndef POPUPMENU_H
#define POPUPMENU_H

#include <QMenu>

class QPushButton;
class QWidget;

class PopupMenu : public QMenu
{
    Q_OBJECT
public:
    explicit PopupMenu(QPushButton* button, QWidget* parent = 0);
    void showEvent(QShowEvent* event);
private:
    QPushButton* b;
};

#endif // POPUPMENU_H

弹出菜单.cpp

#include "popupmenu.h"
#include <QPushButton>

PopupMenu::PopupMenu(QPushButton* button, QWidget* parent) : QMenu(parent), b(button)
{
}

void PopupMenu::showEvent(QShowEvent* event)
{
    QPoint p = this->pos();
    QRect geo = b->geometry();
    this->move(p.x()+geo.width()-this->geometry().width(), p.y());
}

主窗口.cpp

...
PopupMenu* menu = new PopupMenu(ui->pushButton, this);
...
ui->pushButton->setMenu(menu);

它看起来像这样:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 Qt QPushButton 弹出菜单的位置(向右) 的相关文章

随机推荐

  • 求 pandas 中连续两行的平均值

    我试图找到每列中连续两行的平均值 In 207 df DataFrame A 9 4 2 1 4 B 12 7 5 4 8 In 208 df Out 207 A B 0 9 12 1 4 7 2 2 5 3 1 4 4 4 8 结果应该是
  • 关于对库/框架进行单元测试的最佳实践是什么?

    Context 我正在努力为我正在设计的库 框架编写一组单元测试 对于上下文 请将我的库视为一组相关对象的分层对象层 Question 基本上 我试图遵守有关单元测试的原则和最佳实践 如一些帖子 https stackoverflow co
  • 如何改变 svg 的颜色?

    使用figma创建了一个svg并尝试更改css中的颜色 填充 黑色不起作用 SVG代码
  • 如何为 SpriteKit 游戏选择 tvOS 菜单中的按钮

    我正在为 tvOS 扩展我的 iOS 游戏 大多数游戏控制都是由touchesBegan touchesMoved and touchesEnded 我所有的选择按钮都按以下方式处理 if button1 contains location
  • 我可以用作 webpack 配置的 es 模块吗?

    我使用的是节点 13 4 0 带有 es 模块 通过 mjs 扩展名 使用 webpack 配置文件作为 es 模块会崩溃 Error ERR REQUIRE ESM Must use import to load ES Module pa
  • Mockito 和 Java Spring - 测试中的存储库

    我是mockito Java Spring的新手 我尝试进行测试 我有一个管理控制器 其中包含以下方法 RequestMapping value admin users method RequestMethod GET public Res
  • 如何在 JavaScript 中过滤和映射对象数组? [复制]

    这个问题在这里已经有答案了 我有一系列对象 我想从中有条件地创建另一个对象数组 Eg var devs name A age 26 tech JavaScript React addr country India city Pune nam
  • 无法在android中的ListView的EditText中填写详细信息

    我创建了一个带有自定义列表视图的应用程序 我的列表视图包含一个编辑文本字段 但我无法用值填充编辑文本 我是 Android 新手 所以很难找到错误 这是我的代码 public class MainActivity extends Activ
  • node_modules 包如何读取项目根目录中的配置文件?

    我正在创建一个 npm 包 它需要能够从项目根目录读取配置文件 我不知道该怎么做 例如 Next js 能够读取 pages and next config js从项目根目录 笑话能够阅读 jest config js从项目根目录 ESLi
  • Xcode 7 beta 5、Swift 2:UITableViewCell 的子视图在运行时不会添加到 contentView

    使用 Xcode 7 beta 5 和 Swift 2 时会出现以下现象 当使用在故事板中创建的自定义 UICollectionViewCell 时 单元格的子视图不会添加到单元格的子视图中 contentView 因此 该单元格在运行时保
  • 在Java中反转数组[重复]

    这个问题在这里已经有答案了 如果我有一个像这样的数组 1 4 9 16 9 7 4 9 11 反转数组使其看起来像这样的最佳方法是什么 11 9 4 7 9 16 9 4 1 我有下面的代码 但我觉得有点乏味 public int reve
  • RMongo dbGetQueryForKeys 返回 NA

    我正在使用dbGetQueryForKeys函数 我在这里了解到 https stackoverflow com questions 14486780 rmongo dbgetqueryforkeys what is the structu
  • 如何将 BGL 有向图用作无向图(用于布局算法)?

    我正在使用 Boost Graph 制作有向图 实际上是双向图 我想使用现有的布局算法 Kamada Kawai 或 Fruchterman Reingold 但它们只接受无向图作为参数 使用这些布局算法的最简单方法是什么 更一般地说 引诱
  • 当我停止 putty 时,如何在 ubuntu 14.04 上运行 jar 文件而不停止?

    我使用的是ubuntu 14 04 我正在运行一个 jar 文件 该文件应该在几天内收集大量数据 我正在运行 jar 文件 认为这个命令运行良好 java jar xxx jar 但是 当我关闭腻子时 该过程停止了 有没有办法让 jar 文
  • 在 Scala 中将 DataFrame 转换为 RDD[Map]

    我想转换创建的数组 如下所示 case class Student name String age Int val dataFrame DataFrame sql createDataFrame sql sparkContext paral
  • PostgreSQL 的 NGINX TLS 终止

    我一直在尝试使用 NGINX 作为 PostgreSQL 数据库的 TLS 终结器 但没有成功 当我尝试连接到数据库时 出现以下错误 服务器意外关闭连接 这可能意味着服务器在处理请求之前或处理过程中异常终止 当我删除ssl选项中listen
  • 无法让 mongoose-unique-validator 工作

    这不可能那么困难 但我总是收到默认的 mongoose 11000 错误 这是我的代码的简化版本 model import mongoose from mongoose import uniqueValidator from mongoos
  • 将 BlackBerry 应用程序设计得像 iPhone

    我正在将应用程序从 iPhone 移植到 BlackBerry BlackBerry 应用程序往往看起来不像 iPhone 那样精美 但自然地 我希望尽可能保持精美 而不破坏任何重要的 UI 约定 有没有任何 UI 组件可以帮助解决这个问题
  • 带图像的自定义标题

    我正在通过禁用标准标题并自己管理所有内容来为活动创建自定义标题 我想知道是否可以根据我的需要替换 主题标准标题 我可以通过更改 windowXYZStyle 项目来通过主题自定义大小 背景图像和文本 我唯一找不到的东西 如何添加图像而不是文
  • 设置 Qt QPushButton 弹出菜单的位置(向右)

    我正在为 Qt 按钮小部件编写弹出菜单 每当单击按钮时 就会弹出一个菜单 在按钮下方 默认情况下 弹出菜单位于下方左侧 有没有办法让弹出菜单在按钮下方的右侧弹出 没有设置位置的功能 所以我想知道是否有一些复杂的方法可以做到这一点 这是一些代