Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: UVV от Декабрь 01, 2007, 07:55



Название: Enter as Tab
Отправлено: UVV от Декабрь 01, 2007, 07:55
Подскажите, пожалуйста, как грамотно это реализовать, если присутствуют lineEdit, comboBox, textEdit, checkBox, dateTimeEdit.
Помню, что недавно было, но что-то не могу найти.
Ткните, пожалуйста.


Название: Re: Enter as Tab
Отправлено: Racheengel от Декабрь 01, 2007, 13:54
eventFilter должен спасти...


Название: Re: Enter as Tab
Отправлено: Sergey B. от Декабрь 02, 2007, 06:53
Читайте Бланше!

Код:
CustomerInfoDialog::CustomerInfoDialog(QWidget *parent)
    : QDialog(parent)
{
    ...
    firstNameEdit->installEventFilter(this);
    lastNameEdit->installEventFilter(this);
    cityEdit->installEventFilter(this);
    phoneNumberEdit->installEventFilter(this);
}


Код:
bool CustomerInfoDialog::eventFilter(QObject *target, QEvent *event)
{
    if (target == firstNameEdit || target == lastNameEdit
            || target == cityEdit || target == phoneNumberEdit) {
        if (event->type() == QEvent::KeyPress) {
            QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
            if (keyEvent->key() == Qt::Key_Space) {
                focusNextChild();
                return true;
            }
        }
    }
    return QDialog::eventFilter(target, event);
}



Название: Re: Enter as Tab
Отправлено: UVV от Декабрь 03, 2007, 17:53

Код:
... if (keyEvent->key() == Qt::Key_Space) ...
Большое спасибо!
Всё работает, за исключением одного момента.
Если Qt::Key_Space заменить на Qt::Key_Enter, то по нажатию Enter срабатывает кнопка Ok моего диалога.
Что делать в этом случае?
Читайте Бланше!
А можно поподробнее?
А ещё лучше ссылку! ;-)


Название: Re: Enter as Tab
Отправлено: Hellraiser от Декабрь 03, 2007, 18:46
Большое спасибо!
Всё работает, за исключением одного момента.
Если Qt::Key_Space заменить на Qt::Key_Enter, то по нажатию Enter срабатывает кнопка Ok моего диалога.
Что делать в этом случае?
смотреть в сторону setDefault(false) и setAutoDefault(false) для этой кнопки


Название: Re: Enter as Tab
Отправлено: UVV от Декабрь 04, 2007, 05:54
смотреть в сторону setDefault(false) и setAutoDefault(false) для этой кнопки
Да, спасибо. Поставил false, но на Enter почему-то нет никакой реакции.


Название: Re: Enter as Tab
Отправлено: Sergey B. от Декабрь 05, 2007, 06:30
Код:
Qt::Key_Return

Qt::Key_Enter - это Enter на цифровой клавиатуре.
Лучше вмего сделать вот так:

Код:
if (keyEvent->key() == Qt::Key_Return || keyEvent->key()==Qt::Key_Enter) {
                focusNextChild();
                return true;
}

т.к. юзер может использовать Enter и там и там.


Название: Re: Enter as Tab
Отправлено: UVV от Декабрь 05, 2007, 10:51
Покорнейше благодарю!