Как правило, вы не хотите хранить QEvents, которые запускаются QWidgets.
Отправленный вами фрагмент кода верен, если вы хотите отложить обработку QEvent. Однако ваш фрагмент кода не будет делать то, что вы хотите, потому что когда это:
void MyQWidget::timer()
{
if (!waited_actions.isEmpty())
{
QEvent* event = waited_events.takeFirst();
QWidget::event(event);
}
}
получает вызов, ваше QEvent уже удалено, поэтому waited_events
всегда будет пустым.
Если вам нужно MyQWidget
, чтобы использовать этот подход, вам придется создать новое событие (как предложил Ф. Остерфельд). Я не уверен на 100%, но похоже, что вы просто пытаетесь поймать QEvent::KeyPress
. Если это так, то простым способом является MyQWidget
переопределить void QWidget::keyPressEvent(QKeyEvent* event)
.