Название: Как добраться до метода keyPressEvent виджета на форме? (Qt 4.6.0) Отправлено: 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 основной не реагирует. Название: Re: Как добраться до метода keyPressEvent виджета на форме? (Qt 4.6.0) Отправлено: Dendy от Январь 13, 2010, 15:39 Потому что это разные кнопки - Qt::Key_Enter и Qt::Key_Return. Я бы на вашем месте реагировал на сигнал QLineEdit::returnPressed() и устанавливал фокус с помощью QWidget::setFocus().
Название: Re: Как добраться до метода keyPressEvent виджета на форме? (Qt 4.6.0) Отправлено: ymb от Январь 13, 2010, 15:59 Сделал примерно так:
void Form1::on_QLineEdit1_returnPressed() { QLineEdit2->setFocus(); } void Form1::on_QLineEdit2_returnPressed() { QLineEdit3->setFocus(); } Теперь работает. Спасибо. Название: Re: Как добраться до метода keyPressEvent виджета на форме? (Qt 4.6.0) Отправлено: DS_tm от Январь 13, 2010, 17:26 можно также в конструкторе вручную законнектить returnPassed от всех QLineEdit на общий слот и в слоте вызывать focusNextChild(). Такой вариант кажеться мне более локаничным.
|