我想在用户发布Ctrl+时调用一些自定义复制代码C。C之前释放时Ctrl,Qt 发送一个与 匹配的键事件QKeySequence::Copy
。Ctrl之前释放时C,释放事件不匹配。
当 key release 事件出现时Ctrl,有没有办法查看是否C仍然被按住?
当我不Ctrl首先处理被释放时,事件会传递并进行常规复制,这正是我不希望发生的事情。
bool
MyWidget::eventFilter(QObject* object, QEvent* event)
{
// the text edit box filters its events through here
if (object == m_text_edit_box)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
if (key_event->matches(QKeySequence::Copy))
{
// don't do anything and don't pass along event
return true;
}
}
else if (event->type() == QEvent::KeyRelease)
{
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
if (key_event->matches(QKeySequence::Copy))
{
// we only get in here if 'c' is released before ctrl
callCustomCopy();
return true;
}
}
}
// pass along event
return false;
}