2016-08-07 4 views
0

を示していないと、このコードgenerares:私のフレームコードに戻って、今QActionは、私はQtのデザイナーからの私のUIを作成してい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(TR(「コード登録")));ので、あなたの場合は :

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

、その後actionsを追加します。またMenus Exampleを見てください。

0

サンプルコードに問題はないようです。

メニューが表示されない理由は、メニューを表示するためにボタンを数秒間押し続ける必要があるからです。ワンクリックでボタンの通常動作が実行されます。

参照:QToolButton::ToolButtonPopupMode

関連する問題