QAction
我已经创建了内部子类的实例QGraphicsView
并将其连接到同一类中的插槽。
QAction *action = new QAction(tr("New"), this);
action->setObjectName("addStopAction");
action->setShortcut(QKeySequence(Qt::ControlModifier | Qt::Key_N));
connect(action, SIGNAL(triggered()), this, SLOT(addNew()));
addAction(action);
Slot 是一个QGraphicsItem
在场景中创建新实例的函数,分配给QGraphicsView
.
void MyGraphicsView::addNew() {
// Insert new item at cursor position
}
我还将此操作添加到QMenu
用作我的类上下文菜单的 a 中。
QMenu *contextMenu = new QMenu(this);
contextMenu->addAction(action);
一切正常。当我按 Command/Ctrl + N 时,会在光标位置创建新项目。但是当我右键单击并从上下文菜单中选择操作时,我希望在菜单位置创建新项目。
当然,如果 SLOT 被调用contextMenuEvent
或类似的东西,我可以做一些小技巧来标记,但我想知道的是:
有什么方法可以找出是什么在连接的 SLOT 内QAction
发出信号?triggered()
这样,当我应该将新项目放置在光标位置以及在 SLOT 实现内的上下文菜单位置时,我可以处理。