Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с QComboBox
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
inviZ
Собственно, вот в чем проблема. Имеется редактируемый 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);
    }

Работает, но на то он и грязный хак... Может есть более правильное решение?
Litkevich Yuriy
Цитата(inviZ @ 5.6.2010, 15:04) *
Почему-то при нажатии на Enter его текст очищается
никогда такого не замечал
inviZ
Хм, верно, небольшое уточнение есть - подобное странное поведение наблюдается, когда элементы ComboBox'а берутся из модели (QSqlQueryModel, но я думаю, это неважно).
Litkevich Yuriy
кнопка "Ввод" в представлении имеет особый смысл - начать/завершить редактирование
asvil
При нажатии enter в редактируемом комбобоксе, он пытается сделать подобное QComboBox::model()::index(QComboBox::insertPolicy, QComboBox::modelColumn()).setData(QComboBox::lineEdit().text()).
Если установлена модель которая не умеет добавлять записи, то незачем делать QComboBox редактируемым.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.