Я хочу отслеживать, когда нажата клавиша ввода/возврата, а затем сфокусироваться на каком-то другом виджете, но если он не нажат, а spinbox должен принять нормальное действие, а не что-либо еще. Я подклассифицировал QSpinBox и создал защищенное void keyPressEvent (событие QKeyEvent *). Внутри этого кода:Qt5 C++: подклассификация QSpinBox и keyPressEvent не будут работать
void MytSpinBox::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Return) {
qDebug() << "return pressed";
editingFinished();
} else {
qDebug() << "Other key";
event->accept();
}
}
Этот код должен работать, но это не так. Я не знаю, что не так, но когда я сосредотачиваюсь на продвинутой спинбоке и пытаюсь изменить число в ней, это просто не сработает, я получаю только отладочное сообщение. Если я нажимаю клавишу ввода/возврата, то печатаю сообщение отладки и фокусируюсь на другом виджетах, которые я установил в editFinished().
Что я делаю неправильно?
ли все из вашего кода это? Вы не называете реализацию базового класса ('QSpinBox :: keyPressEvent (event)'), что, разумеется, разрывает вашу спинбокс. – peppe