我正在从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,甚至是向下的箭头,这表明有菜单,但当我单击它时,菜单不会出现。。。有什么想法吗?
您的示例代码似乎没有任何问题。
你看不到菜单的原因可能是你需要按住按钮几秒钟才能显示菜单。只需单击一下就可以执行按钮的正常操作。
请参见:QToolButton::ToolButtonPopupMode。
您应该使用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");
然后添加CCD_ 1。另请参阅菜单示例。