例如,考虑一个具有Delete键的快捷方式的主菜单项(以Qt :: WindowShortcut为上下文)。我希望另一个QWidget在聚焦时处理Delete键。这是不可能的,因为Delete键是由主菜单处理的。我试图抓住键盘上的QWidget焦点,但这没有任何作用。这可能吗?
我可以通过在QWidget处于焦点状态时在qApp上安装事件过滤器(在失去焦点时将其删除),并对所有QEvent :: Shortcut类型返回true来获得所需的行为。
void MyWidget::focusInEvent( QFocusEvent *event )
{
qApp->installEventFilter(this);
}
void MyWidget::focusOutEvent( QFocusEvent *event )
{
qApp->removeEventFilter(this);
}
bool MyWidget::eventFilter( QObject *target, QEvent *event )
{
if (event->type() == QEvent::Shortcut)
{
// If I care about this shortcut, then return true to intercept
// Else, return false to let the application process it
}
return false;
}
如果有更好的方法,我很想听听!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句