【问题标题】:QAction doesn't show QMenuQAction 不显示 QMenu
【发布时间】:2016-08-07 21:25:12
【问题描述】:

我正在从 Qt Designer 创建我的 UI,它会生成以下代码:

toolBar = new QToolBar(MainWindow);
QIcon icon;
icon.addFile(QStringLiteral(":/main"), QSize(), QIcon::Normal, QIcon::Off);
MainWindow->addToolBar(Qt::TopToolBarArea, toolBar);
actionConvert = new QAction(MainWindow);
actionConvert->setObjectName(QStringLiteral("actionConvert"));
actionConvert->setIcon(icon);
toolBar->addAction(actionConvert);

现在,回到我的框架代码:

QMenu *menuAdd = new QMenu (this);
menuAdd->addAction (tr("&Files..."));
menuAdd->addAction (tr("&Directory..."));
ui->actionConvert->setMenu (menuAdd);

当我运行应用程序时,我可以在工具栏中看到 qaction,甚至可以看到向下的箭头,这表明有一个菜单,但是当我点击它时,菜单没有出现......有什么想法吗?

【问题讨论】:

    标签: qt qt5 qt-designer


    【解决方案1】:

    您的示例代码似乎没有任何问题。

    您看不到菜单的原因可能是您需要按住按钮几秒钟才能显示菜单。单击即可执行按钮的正常操作。

    请参阅:QToolButton::ToolButtonPopupMode

    【讨论】:

    • 对。这样做:dynamic_cast<QToolButton*>(toolbar->widgetForAction(action))->setPopupMode(QToolButton::InstantPopup)
    【解决方案2】:

    您应该像我的情况一样使用menuBar() 方法添加菜单:

    void MainWindow::ueInitMenu()
    {
        this->ueSetCodeRegisterPlacesAction(new QAction(tr("Places"),
                                            this));
        this->ueCodeRegisterPlacesAction()->setShortcut(tr("Ctrl+P"));
        this->ueCodeRegisterPlacesAction()->setStatusTip(tr("Shows places code register"));
    
        connect(this->ueCodeRegisterPlacesAction(),
                SIGNAL(triggered()),
                this,
                SLOT(ueSlotShowPlacesView()));
    
        this->ueSetCodeRegisterMenu(this->menuBar()->addMenu(tr("Code register")));
        this->ueCodeRegisterMenu()->addAction(this->ueCodeRegisterPlacesAction());
    }   // ueInitMenu
    

    尤其是这一行:

    this->ueSetCodeRegisterMenu(this->menuBar()->addMenu(tr("代码寄存器"))); 所以在你的情况下:

    this->menuBar()->addMenu(tr("System menu");
    

    然后添加actions。也可以看看Menus Example

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多