2016-08-07 4 views
0

Я создаю мой пользовательский интерфейс с Qt Designer и generares этот код:QAction не показывает QMenu

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 на панели инструментов даже стрелку, указывающую вниз, что указывает на то, что есть меню, но когда я нажимаю на него, меню не появляется ... какие-либо идеи?

ответ

0

Вы должны добавить меню с 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 

Especialy линия:

this-> ueSetCodeRegisterMenu (this-> Menubar() -> addMenu (тр ("Код регистр"))); так в вашем случае:

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

, а затем добавить actions. Также взгляните на Menus Example.

0

В вашем примере кода, похоже, нет ничего плохого.

Возможно, причина, по которой вы не видите меню, заключается в том, что вам нужно нажать и удерживать кнопку в течение нескольких секунд, чтобы меню появилось. Один клик просто выполнит нормальное действие кнопки.

См. QToolButton::ToolButtonPopupMode.