是否可以传递参数?
这样的事情:
答案 0 :(得分:3)
如果快捷方式无关紧要,请使用QAction
将快捷方式分配给QAction::setShortcuts
。
font_increase_action_ = new QAction(tr("&Increase font sizes"), this);
font_increase_action_->setShortcuts(QList<QKeySequence>()
<< Qt::CTRL + Qt::Key_BracketRight
<< Qt::CTRL + Qt::Key_Greater);
connect(font_increase_action_, SIGNAL(triggered()), SLOT(IncreaseFontSizes()));
如果确实需要知道按下了哪个快捷方式,您可以将每个快捷方式分配到单独的QAction,然后使用QSignalMapper。
答案 1 :(得分:0)
好吧,为了完全你要问的内容,你可以跟踪你所有的QShortcut对象,然后使用你的插槽内的sender()函数来确定导致的QShortcut要触发的插槽。
然而,听起来你真的想考虑使用和覆盖QWidget::keyPressEvent()
,如果可能的话。要求QKeyEvent对象按下哪个键比执行所有这些疯狂的QShortcut混乱要容易得多。