我正试图通过在该区域安装QMdiArea
来覆盖eventFilter
的 Ctrl + Tab 行为。
我用来测试忽略事件的实现如下:
bool
MyEventFilterClass::eventFilter(QObject * watched, QEvent * e)
{
if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ||
e->type() == QEvent::Shortcut || e->type() == QEvent::ShortcutOverride)
{
// Ignore all keyboard and shortcut events
return true;
}
return false;
}
我认为忽略所有键和快捷方式事件会阻止 Ctrl + Tab 被QMdiArea
处理,但这不正确。即使为所有事件返回true, Ctrl + Tab 仍然可以正常工作,尽管下一个活动窗口没有正常显示。
请注意,一旦我能够阻止标准行为,我就会实现自己的行为。
如何阻止 Ctrl + Tab 被处理?
答案 0 :(得分:1)
QMdiArea
已使用事件过滤器捕获 Ctrl + Tab ,因此您必须创建QMdiArea
的派生类并重新定义其eventFilter
函数。
由于QMdiArea::eventFilter
中还有很多其他内容,所以不要忘记为不想阻止或处理的事件调用它。