在Qt应用程序中创建的键盘快捷键 - 功能键在OSX上不起作用

时间:2014-09-15 16:11:56

标签: macos qt menu shortcut

我有一个程序,在主菜单中使用某些快捷方式。它适用于Windows和Linux。移植到mac时,某些快捷方式不起作用。

使用QT Designer创建菜单。看起来像这样

QAction *actDelete;
actDelete = new QAction(MainWindow);
actDelete->setObjectName(QString::fromUtf8("actDelete"));
menu_Edit->addAction(actDelete);
actDelete->setText(QApplication::translate("MainWindow", "Delete", 0, QApplication::UnicodeUTF8));
actDelete->setShortcut(QApplication::translate("MainWindow", "Del", 0, QApplication::UnicodeUTF8));


QAction *act1;
act1 = new QAction(MainWindow);
act1->setObjectName(QString::fromUtf8("act1"));
menu1->addAction(act1);
act1->setText(QApplication::translate("MainWindow", "Action 1", 0, QApplication::UnicodeUTF8));
act1->setShortcut(QApplication::translate("MainWindow", "F12", 0, QApplication::UnicodeUTF8));

唯一不起作用的键是功能键和删除(对于删除原因可能是Mac已经用技术上退格的键替换了它......但它仍然被称为删除,所以它应该工作?)

其他键组合起作用......功能键分配给其他功能......

似乎无法通过代码删除功能键的默认功能(这是真的吗?) - 所以我去点击按钮“启用”使用所有F1,F2等键作为标准功能键“。”。此时,我可以按功能键查看它们生成的代码(例如key=0x100003Bctrl + F12的{​​{1}}。

在主窗口构造函数中,在实例化ui之后,我尝试了

cmd + F12

Qt版本4.7-4.8,使用g ++构建OSX 10.6.8

1 个答案:

答案 0 :(得分:1)

添加了Mac快捷方式的定义

#if defined (Q_OS_MACX)
    m_ui->act1->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F12));
#endif

添加了Backspace而不是Delete for Mac。