Russian Qt Forum

Qt => Вопросы новичков => Тема начата: irv от Ноябрь 30, 2011, 08:06



Название: Переопределение клавиш
Отправлено: irv от Ноябрь 30, 2011, 08:06
Такой вопрос.
По умолчанию, pushButton при клике реагирует на пробел. Как переопределить на Enter?
Я пытался использовать setShortcut, но это работает только для одной кнопки, а мне нужно
чтобы на Enter реагировали все кнопки, вместо пробела.
И как сделать, чтобы одна кнопка сразу была "в фокусе", а по не нажатию клавиши TAB.

Заранее спасибо за помощь.


Название: Re: Переопределение клавиш
Отправлено: Bepec от Ноябрь 30, 2011, 08:57
1) Наследоваться от QPushButton и переопределить для этого класса keyReleaseEvent ( QKeyEvent * ).
НО.
Поясни как это
Цитировать
при клике реагирует на пробел
.

Если на кнопке стоит фокус, то Enter точно так же как и пробел работает.


2) применить к нужной кнопке слот setFocus()


Название: Re: Переопределение клавиш
Отправлено: kambala от Ноябрь 30, 2011, 09:02
попробуй ещё поиграться свойствами default и autoDefault кнопок.

если так ничего и не получится, то можно использовать такой "хак": переопредели protected метод своей формы:
Код
C++ (Qt)
void MyForm::keyPressEvent(QKeyEvent *event)
{
   if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) // нажат энтер обычный или на нампаде
   {
       QWidget *focusWidget = qApp->focusWidget();
       QList<QPushButton *> buttons = QList<QPushButton *>() << myButton1 << myButton2 << ... ; // этот список можно и как член класса хранить
       foreach (QPushButton *button, buttons)
           if (button == focusWidget)
           {
               button->click();
               break;
           }
   }
   else // не уверен нужен ли тут элс
       MyFormSuperClass::keyPressEvent(event);
}


Название: Re: Переопределение клавиш
Отправлено: Пантер от Ноябрь 30, 2011, 09:05
Если для всех, то
Код
C++ (Qt)
QPushButton *button = qobject_cast <QPushButton*> (qApp->focusWidget());
if (button) {
   button->click();
}
 


Название: Re: Переопределение клавиш
Отправлено: irv от Ноябрь 30, 2011, 11:36
Проблема решена. Еще раз всем спасибо за помощь.


Название: Re: Переопределение клавиш
Отправлено: Bepec от Ноябрь 30, 2011, 12:15
ААА переименовать тему в [РЕШЕНО]?