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);
    }

Работает, но на то он и грязный хак... Может есть более правильное решение?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.6.2010, 11:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(inviZ @ 5.6.2010, 15:04) *
Почему-то при нажатии на Enter его текст очищается
никогда такого не замечал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
inviZ
  опции профиля:
сообщение 5.6.2010, 13:12
Сообщение #3


Студент
*

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

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




Репутация:   1  


Хм, верно, небольшое уточнение есть - подобное странное поведение наблюдается, когда элементы ComboBox'а берутся из модели (QSqlQueryModel, но я думаю, это неважно).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.6.2010, 15:01
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9631
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


кнопка "Ввод" в представлении имеет особый смысл - начать/завершить редактирование
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
asvil
  опции профиля:
сообщение 8.6.2010, 0:22
Сообщение #5


Новичок


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

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




Репутация:   0  


При нажатии enter в редактируемом комбобоксе, он пытается сделать подобное QComboBox::model()::index(QComboBox::insertPolicy, QComboBox::modelColumn()).setData(QComboBox::lineEdit().text()).
Если установлена модель которая не умеет добавлять записи, то незачем делать QComboBox редактируемым.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 21.9.2017, 15:10