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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как добраться до метода keyPressEvent виджета на форме? (Qt 4.6.0)  (Прочитано 3511 раз)
ymb
Гость
« : Январь 13, 2010, 15:28 »

Есть форма Form1. на ней есть три виджета типа QLineEdit. необходимо сделать преход от  QLineEdit1 к QLineEdit2 и далее к QLineEdit3 по нажатию клавиши Enter. В файле Form1.cpp пишу функцию

void Form1::keyPressEvent( QKeyEvent *event )
{
    if (event->key() == Qt::Key_Enter)

        ... обработка нажатия Enter
   
   }
}

Какие дальнейшие действия?

PS: Почему-то программа реагирует только на кнопку Enter цифровой клавиатуры. А на Enter основной не реагирует.
Записан
Dendy
Гость
« Ответ #1 : Январь 13, 2010, 15:39 »

Потому что это разные кнопки - Qt::Key_Enter и Qt::Key_Return. Я бы на вашем месте реагировал на сигнал QLineEdit::returnPressed() и устанавливал фокус с помощью QWidget::setFocus().
Записан
ymb
Гость
« Ответ #2 : Январь 13, 2010, 15:59 »

Сделал примерно так:

void Form1::on_QLineEdit1_returnPressed()
{
    QLineEdit2->setFocus();
}

void Form1::on_QLineEdit2_returnPressed()
{
    QLineEdit3->setFocus();
}

Теперь работает.
Спасибо.
« Последнее редактирование: Январь 13, 2010, 16:03 от ymb » Записан
DS_tm
Гость
« Ответ #3 : Январь 13, 2010, 17:26 »

можно также в конструкторе вручную законнектить returnPassed от всех QLineEdit на общий слот и в слоте вызывать focusNextChild(). Такой вариант кажеться мне более локаничным.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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