【发布时间】:2014-11-09 05:38:15
【问题描述】:
我有一个在主菜单中使用某些快捷方式的程序。它适用于 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));
唯一不起作用的键是功能键和 Delete(对于 Delete,原因可能是 Mac 已将它替换为技术上是退格键的键......但它仍然被称为 Delete 所以它应该可以工作?)
其他组合键有效...功能键分配给其他功能似乎...
似乎不可能通过代码删除功能键的默认功能(真的吗?) - 所以我去点击按钮“启用”使用所有 F1、F2 等键作为标准功能钥匙。”'。此时我可以按下功能键并查看它们生成的代码(如key=0x100003B 用于ctrl + F12 或cmd + F12)。
在主窗口构造函数中,实例化ui后,我尝试了
#if defined Q_OS_MACX
m_ui->act1->setShortcut(tr("CTRL+F12")); // still nothing happening
m_ui->act1->setShortcut(Qt::CTRL+Qt::Key_F12); // same, no effect on mac (though if i put it for windows the ctrl+F12 does have the desired effect
#endif
Qt 版本 4.7-4.8,使用 g++ 构建的 OSX 10.6.8
【问题讨论】:
-
F11 和 F12 由操作系统默认使用(尽管用户可以取消绑定)。不过,不知道删除。
-
刚刚更新 - 在 mac 上进行测试后,我可以看到默认的 mac 操作正在发生。但是开发人员必须有一种方法来重新定义这些操作?