Problem with QAction's shortcut and QMenu



  • When i add an action to a QMenu, wich is added to QMenuBar() in QMainWindow, the QAction's shortcut works fine. But, when i do:
    @QMenuBar()->hide()@
    the shortcut doesn't answer anymore, any idea?



  • If you hide the menu, the action is also hidden if it is not used on any other object.
    Am I right, that it is not connected additionally to a toolbar?



  • You are right Gerolf, the actions added to the toolbar still answering to the shortcut. What do you suggest to fix that?



  • If an action is completely hidden, it is disabled. If you need global shortcuts, event when the actions UI stuff is hidden, us "QShortcut":http://doc.qt.nokia.com/4.7/qshortcut.html

    @
    shortcut = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")), this);
    shortcut->setContext(Qt::ApplicationShortcut);
    connect(shortcut, SIGNAL(activated ()), this, SLOT(fileOpen()));
    @



  • yeah, that works, and i've done something like that, but then if the menu is visible (hiding and showing is done by the user) i get to another problem:
    @QAction::eventFilter: Ambiguous shortcut overload: Ctrl+O@
    and the only thing comes to my mind is to implement something that manage the shortcuts according to the menu state, what's your opinion about that?



  • you could remove the shortcut from the action, as it is available by the shortcut instance :-)



  • yes, i can do that too, but it's going to be a pain in the a** since i need to consider wich action is in the toolbar (also configurable in the ui) :-P
    anyway, thanks you for answering so fast.



  • I found out that setting the height to 0 might do the job. The menu is gone, but the shortcuts are still working (tested under Qt 5.4.2).
    ui->menuBar->setFixedHeight(0);


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.