qt — Qt5 C ++: подклассы QSpinBox и keyPressEvent не будут работать

Я хочу отслеживать, когда нажата клавиша ввода / возврата, а затем сфокусироваться на каком-то другом виджете, но если он не нажат, тогда spinbox должен выполнить обычное действие вместо всего остального. Я создал подкласс QSpinBox и создал защищенное void keyPressEvent (событие QKeyEvent *). Внутри это код:

void MytSpinBox::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Return) {
qDebug() << "return pressed";
editingFinished();
} else {
qDebug() << "Other key";
event->accept();
}
}

Этот код должен работать, но это не так. Я не знаю, в чём дело, но когда я сосредотачиваюсь на продвигаемом spinbox и пытаюсь изменить в нем номер, он просто не работает, я только печатаю отладочное сообщение. Если я нажму клавишу ввода / возврата, то выведу отладочное сообщение и сосредоточусь на каком-то другом виджете, который я установил в editFinished ().

Что я делаю неправильно?

0

Решение

Если вам нужно вызвать обработку события по умолчанию, вам нужно вызвать реализацию базового класса:

void MytSpinBox::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Return) {
qDebug() << "return pressed";
editingFinished();
} else {
QSpinBox::keyPressEvent(event);
}
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]