我有一个程序,在主菜单中使用某些快捷方式。它适用于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=0x100003B
或ctrl + F12
的{{1}}。
在主窗口构造函数中,在实例化ui之后,我尝试了
cmd + F12
Qt版本4.7-4.8,使用g ++构建OSX 10.6.8
答案 0 :(得分:1)
添加了Mac快捷方式的定义
#if defined (Q_OS_MACX)
m_ui->act1->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F12));
#endif
添加了Backspace而不是Delete for Mac。