gpt4 book ai didi

qt - 如何将信号分配给 QMenu 而不是 Qt 中的 QAction?

转载 作者:行者123 更新时间:2023-12-01 01:28:18 27 4
gpt4 key购买 nike

我想要一个没有 child 的菜单项。我有一个 QMenubar,在这个菜单栏中有一个 QMenu。要将其用作菜单,我必须将 QActions 放入其中,如果我单击 QMenu,它们就会出现。怎么可能,只有菜单,没有任何 QActions,做一个 Action 就像一个 QAction 一样?

一种解决方法是拥有一个工具箱并将其伪装成菜单,但这会引发几个问题:

  • 这不是最干净的解决方案
  • 我必须手动关心在鼠标悬停时突出显示它,并且它不会独立于平台和用户设置。
  • 我不能在带有 child 的普通菜单的菜单栏中一起使用它。
  • 最佳答案

    因此,您想要一个无需打开子菜单即可触发操作的菜单栏?

    尝试将 QActions 直接添加到菜单栏,而不是在其间添加 QMenu:

    #include <QtWidgets>

    int main(int argc, char **argv)
    {
    QApplication app(argc, argv);
    QMainWindow *wnd = new QMainWindow;
    QMenuBar *m = new QMenuBar;
    QAction *a = new QAction("DoIt");

    QObject::connect(a, &QAction::triggered, [wnd](){
    QMessageBox::information(wnd, "DoIt", "DoIt");
    });

    m->addAction(a);
    wnd->setMenuBar(m);
    wnd->show();
    return app.exec();
    }

    或者,您可以继承 QMenu 并处理 mousePressEvent 方法以发出信号

    关于qt - 如何将信号分配给 QMenu 而不是 Qt 中的 QAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370793/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com