Ctrlユーザーが+を離したときに、カスタムコピーコードを呼び出したいと思いますC。がCリリースされる前にリリースされるCtrlと、Qtは。と一致するキーイベントを送信しますQKeySequence::Copy
。Ctrlがリリースされる前にリリースされた場合C、リリースイベントは一致しません。
キーリリースイベントが発生した場合、まだ保留されているかどうか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;
}