Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QKeySequence - multiple keys



  • I am trying to create shortcuts for menu actions, which include multiple keys. For the actions directly in the menu list, I am using shortcuts like "Ctrl + 1", etc. which works just fine.

    @QAction *qa_enableLighting = viewer_menu->addAction("Enable Lighting", this, SLOT(on_action_enableLighting_triggered()), QKeySequence(Qt::CTRL + Qt::Key_1));@

    However, for an action under a sub-menu, I would like to use multiple keys, for example, "Ctrl + V + 1". When I try to create this keysequence, it does not work, i.e. the shortcut just doesn't show up.

    @QAction *qa_submenu = submenu->addAction("Test 1", this, SLOT(on_action_submenu1_triggered()), QKeySequence(Qt::CTRL + Qt::Key_V + Qt::Key_1));@

    Instead, when I used
    @QKeySequence(Qt::CTRL + Qt::Key_M + Qt::Key_1))@

    the shortcut showed up as "Ctrl+~". I understand that Ctrl+V is a standard shortcut, and probably that is why Qt is not allowing me to use it, while "M+1" is creating "~". However, is there a way to enable using sequences of the following form ?

    @Ctrl + <key_of_my_choice> + 1@


  • Lifetime Qt Champion

    Hi,

    You can't do it like that. QKeySequence's documentation explains why: a shortcut is composed of one Qt::Key and 0 or more modifiers.



  • Thanks for the pointer, SGaist. But is there an easy way to use multiple keys ?


  • Lifetime Qt Champion

    I would say an event filter where you keep track of the keys pressed and act accordingly


Log in to reply