qt - 在 Qt 中,如何在菜单中显示键盘快捷键但禁用它们?

标签 qt qt4 menu keyboard-shortcuts pyqt

我正在添加一堆 QAction s 到我的主窗口的菜单。这些操作也可以由键盘触发,我希望快捷方式在菜单中可见,像往常一样,例如

-----------------
|Copy     Ctrl+C|
-----------------

我可以使用 QAction.setShortcut() 来做到这一点.然而,我不要想要这些QAction s 由快捷键触发;我正在其他地方分别处理所有键盘输入。

这可能吗?我可以禁用 QAction 中的快捷方式,但我的菜单中仍然有快捷方式文本(在本例中为 Ctrl + C)吗?

编辑 :我最终这样做的方式是连接到菜单的 aboutToShow()aboutToHide()事件,并启用/禁用快捷方式,以便它们仅在显示菜单时处于事件状态。但我希望有一个更清洁的解决方案......

最佳答案

您可以从 QAction 继承并覆盖 QAction::event(QEvent*):

class TriggerlessShortcutAction : public QAction
{
public:
    ...ctors...

protected:
    virtual bool event(QEvent* e)
    {
        if (e->type() == QEvent::Shortcut)
            return true;
        else
            return QAction::event(e);
    }
};

这将导致发送到您的操作的 QEvent::Shortcut 类型的任何事件都不会触发 'triggered()' 信号。

关于qt - 在 Qt 中,如何在菜单中显示键盘快捷键但禁用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894395/

相关文章:

c++ - 在 OpenMP 循环中调用 QApplication::processEvents()?

jquery - 水平子导航查询

c++ - 在 QLabel 上将 float 显示为 QString 显示 "G",其中点 "."应该去

c++ - 如何判断是否在启用 NumLock 的情况下在小键盘输入上按下了 shift?或者至少获得 NumLock 状态?

c++ - 将 QImage 保存到 QBuffer

Safari 和 Chrome 的 CSS 菜单问题

css - 下拉菜单不下拉

c++ - 如何从小部件获取 ui 以便将其连接到另一个类?

c++ - 无法在 qt-creator 中调试,cdb 崩溃 0xC0000135

c++ - 从Qt中的信号调用成员函数的问题