crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблема с QComboBox
inviZ
  опции профиля:
сообщение 5.6.2010, 11:04
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 5.6.2010
Пользователь №: 1781

Спасибо сказали: 4 раз(а)




Репутация:   1  


Собственно, вот в чем проблема. Имеется редактируемый QComboBox. Почему-то при нажатии на Enter его текст очищается.
Что очень нежелательно, т.к. Enter призван вызывать нажатие на default button диалога. И собственно, если фокус при этом находится на комбобоксе, произойдет совершенно ненужная в данном случае очистка. Как запретить подобное поведение? Желательно без наследования. Ради таких мелочей лишние классы плодить не хочется.
Пробовал через installEventFilter - событие-то отфильтровываю, но при этом default button также не нажимается, сделал пока такой грязный хак:

    bool ComboBoxEventFilter::eventFilter(QObject *obj, QEvent *event)
    {
        if (event->type() == QEvent::KeyPress)
        {
            QKeyEvent* keyEvent = static_cast<QKeyEvent *>(event);
            
            int key = keyEvent->key();
            if (key == Qt::Key_Return || key == Qt::Key_Enter)
            {
                QDialog* d = static_cast<QDialog *>(obj->parent());
                d->accept();
                return true;
            }
        }

        return QObject::eventFilter(obj, event);
    }

Работает, но на то он и грязный хак... Может есть более правильное решение?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2024, 0:31