Je voudrais appeler un code de copie personnalisé lorsque l'utilisateur publie Ctrl + C. Lorsque C est libéré avant Ctrl, Qt envoie un événement clé qui correspond à QKeySequence::Copy
. Lorsque Ctrl est libéré avant C, l'événement de sortie ne correspond pas.Comment attraper l'événement de touche Ctrl + C avec Qt lorsque Ctrl est relâché avant 'C'?
Lorsque l'événement de sortie clé vient avec Ctrl, est-il un moyen de voir si C est toujours maintenue enfoncée?
Lorsque je ne gère pas Ctrl étant publié d'abord, l'événement est transmis et il fait une copie régulière, ce qui est exactement ce que je ne veux pas arriver.
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;
}