Wie fangen Sie Strg+C, Schlüssel-Ereignis mit Qt, wenn die Strg-Taste ist freigegeben, bevor 'C'?

Möchte ich nennen einige benutzerdefinierte code kopieren, wenn der Benutzer releases Strg+C. Wenn Sie C wird veröffentlicht, bevor Sie Strg, Qt sendet ein wichtiges Ereignis entspricht, mit QKeySequence::Copy. Wenn Sie Strg wird veröffentlicht, bevor Sie C, das release-Ereignis nicht übereinstimmen.

Wenn der key release event kommt mit Strg, gibt es einen Weg, um zu sehen, wenn Sie C ist immer noch nach unten gezogen wird?

Wenn ich nicht handle Strg wird erst veröffentlicht, der event wird weitergegeben, und es hat eine regelmäßige kopieren, das ist genau das, was ich nicht wollen, zu geschehen.

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;
}

InformationsquelleAutor Nick McCowin | 2009-07-17

Schreibe einen Kommentar