Russian Qt Forum

Qt => Общие вопросы => Тема начата: kadr от Январь 20, 2010, 14:23



Название: События нажатия клавиш
Отправлено: kadr от Январь 20, 2010, 14:23
Привет всем, мне нужно что бы программы отлавливала нажатия двух клавиш, то есть, например: Ctrl+X,Ctrl+A,Ctrl+V
У меня получается отловить одну клавишу:
Код:
bool lgot_rech::eventFilter(QObject *obj, QEvent *event)
{
       if (event->type() == QEvent::KeyPress)
         {
             QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
             if ((keyEvent->key()==Qt::Key_Control) && (keyEvent->key()==Qt::Key_X))
             {                
               .........................
             }
         }
}
не получается! Как нужно делать то?


Название: Re: События нажатия клавиш
Отправлено: edwardtrojan от Январь 20, 2010, 14:31
скорее всего кто-нибудь другой перехватывает другие клавиши. Нужно проверять у элементов кто еще обрабатывает клаву


Название: Re: События нажатия клавиш
Отправлено: crossly от Январь 20, 2010, 14:33
Ctrl надо брать из
Код:
Qt::KeyboardModifiers	modifiers () const


Название: Re: События нажатия клавиш
Отправлено: kadr от Январь 20, 2010, 14:47
Ctrl надо брать из
Код:
Qt::KeyboardModifiers	modifiers () const
Пробую так:
if (keyEvent->key()==Qt::Key_Q & Qt::ControlModifier)
не получается!


Название: Re: События нажатия клавиш
Отправлено: kadr от Январь 20, 2010, 14:51
Все понял, вот так работает:
if (keyEvent->key()==Qt::Key_Q & keyEvent->modifiers()==Qt::ControlModifier)


Название: Re: События нажатия клавиш
Отправлено: crossly от Январь 20, 2010, 14:52
брр.....
Код:
if (keyEvent->key()==Qt::Key_Q && (keyEvent->modifiers() & Qt::ControlModifier))


Название: Re: События нажатия клавиш
Отправлено: kadr от Январь 20, 2010, 14:57
брр.....
Код:
if (keyEvent->key()==Qt::Key_Q && (keyEvent->modifiers() & Qt::ControlModifier))
Спасибо за помощь!