【发布时间】:2020-08-05 17:44:59
【问题描述】:
我的QGraphicsScene 子类 WorkspaceScene 包含一个变量,用于稍后在上下文菜单中使用的每个操作。我有一个设置动作并添加快捷方式的函数(在类的构造函数中调用),然后我有一个创建上下文菜单的函数,在我重新实现的contextMenuEvent 函数中调用。
以下是一些相关代码:
// Constructor
WorkspaceScene::WorkspaceScene()
{
_setUpActions();
}
// ContextMenuEvent
void WorkspaceScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
_setUpItemMenu();
_itemContextMenu.exec(event->screenPos());
}
void WorkspaceScene::_setUpActions()
{
deleteAction = new QAction("Delete");
deleteAction->setShortcut(QKeySequence::Delete); // This should add the shortcut
connect(deleteAction, &QAction::triggered, this, &WorkspaceScene::deleteItemSlot);
}
void WorkspaceScene::_setUpItemMenu()
{
_itemContextMenu.clear();
_itemContextMenu.addAction(deleteAction);
}
这成功设置了操作,它们在上下文菜单中工作,但快捷方式似乎不起作用。这样做的正确方法是什么?
【问题讨论】:
-
用
deleteAction->setShortcut(Qt::Key_Delete);代替deleteAction->setShortcut(QKeySequence::Delete);
标签: c++ qt qgraphicsscene qmenu qaction