Мда, "Уж послала, так послала..." (с)
Ну, зато закаляет характер. А для лентяев (коим и сам я являюсь) опишу, как я это сделал. Может не оптимально, но работает.
1. Создаем фильтр событий окна. Там интуитивно по названию закорючек всё примерно понятно (даже мне). Это я честно списал у кого-то в инете:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() != QEvent::KeyPress)
{
return QObject::eventFilter(obj, event);
}
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
switch (keyEvent->key()) {
case Qt::Key_Return:
case Qt::Key_Enter:
if (focusNextChild()) {
return true;
}
return false;
default:
return QObject::eventFilter(obj, event);
}
}
2. Теперь надо инсталлировать этот фильтр для каждого нужного нам виджета (у которого д.б. такое поведение). Как сделать - на любителя, я себе написал функцию такого вида:
void MainWindow::InstallEventFilters(QObject * obj,...)
{
va_list args;
for(va_start(args,obj);obj;obj->installEventFilter(this),obj = va_arg(args,QObject *));
}
Ей передаётся любое число указателей на виджеты (но не меньше одного), которым надо инсталлировать обработчик. Последним элементом (признаком конца) в передаваемом списке должен быть NULL
3. В конструкторе формы вызываем что-то вроде этого:
InstallEventFilters(ui->DateCreateBegin,ui->DateCreateEnd,ui->TimeCreateBegin,ui->TimeCreateEnd,NULL);
Всё - перечисленные в вызове виджеты приобретают нужное нам поведение. Пока вроде работает.