首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QAction不显示QMenu

QAction不显示QMenu
EN

Stack Overflow用户
提问于 2016-08-08 05:25:13
回答 2查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
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);

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

代码语言:javascript
复制
QMenu *menuAdd = new QMenu (this);
menuAdd->addAction (tr("&Files..."));
menuAdd->addAction (tr("&Directory..."));
ui->actionConvert->setMenu (menuAdd);

当我运行应用程序时,我可以在工具栏中看到qaction,甚至可以看到向下的箭头,这表明有一个菜单,但当我单击它时,菜单没有appear...any ideas?

EN

回答 2

Stack Overflow用户

发布于 2016-08-08 07:12:28

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

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

请参阅:QToolButton::ToolButtonPopupMode

票数 1
EN

Stack Overflow用户

发布于 2016-08-08 06:06:14

您应该使用menuBar()方法添加菜单,如我的示例:

代码语言:javascript
复制
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("Code寄存器“);所以在您的例子中:

代码语言:javascript
复制
this->menuBar()->addMenu(tr("System menu");

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38818718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档