Russian Qt Forum
Ноябрь 26, 2024, 02:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: eventFilter и LineEdit, ComboBox  (Прочитано 2975 раз)
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« : Февраль 07, 2011, 11:31 »

Добрый день коллеги! Есть два вопросика (простеньких). Мне как то трудно в них разобраться.
1. Навесил фильтр на LineEdit:
Код:
bool Form::eventFilter(QObject *target, QEvent *event)
               {
                 if(target == comboBox || target == lineEdit)
    if(event->type() == QEvent::FocusIn)
    {
if(target == comboBox)
contactComboBox->removeItem(0);//contactComboBox->setCurrentText("");
if(target == lineEdit)
lineEdit->clear();
return true;
                    }
                  return QWidget::eventFilter(target, event);
}
Получается что после получения фокуса lineEdit очищается,а мигающего курсора ввода в нем нет. Как его вернуть?

2. Почему то при получении фокуса comboBox не очищается. Код выше. Помогите кто сталкивался с этим.
Записан

Qt 5.11.0, Win, MinGW
vvvxmag
Гость
« Ответ #1 : Февраль 07, 2011, 13:22 »

Если ты полностью берешь на себя обработку Event то функция должна вернуть true;
Если же ты хочешь только выполнить какое-то действие при этом не нарушаю обычный ход веще то нужно вернуть false

Я думаю что в случае с LineEdit очистив его , ему не был установлен режим ввода;

Попробуй возвращать false;

Или принудительно ставь его в режим редактирования
Записан
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #2 : Февраль 07, 2011, 15:07 »

Нет false возвращать не надо. Я не полностью обрабатываю это событие поэтому возвращать надо что то типа
Код:
QDialog::eventFilter(target, event);

Спасибо
Записан

Qt 5.11.0, Win, MinGW
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #3 : Февраль 07, 2011, 16:48 »

Замечание. Странное поведение ComboBox. Если свойство edittable == true (можно редактировать), то на на события он не реагирует. В частности при получении фокуса текст не удаляется (в моем примере). А если равно false то все нормально работает. Как же это исправить так чтобы и при edittable == true тоже все работало.
Записан

Qt 5.11.0, Win, MinGW
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.