Название: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 19, 2010, 21:27 Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)?
Шорткаты ака QShortcut не удалось приручить, мне нужно что-бы клавиатурные комбинации срабатывали только на виджете. if (event->matches(QKeySequence::Copy)) и if (event->matches(QKeySequence::Paste)) срабатывают только в случае (контрол|шифт)+инсерт. А мну хочу еще контрол+(v|c) Типа хелп :) Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: ufna от Январь 19, 2010, 21:33 лови нажатие клавиши и проверяй модификатор Ctrl.
Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 19, 2010, 21:44 лови нажатие клавиши и проверяй модификатор Ctrl. проверить модификатор самое легкое :)Код: Qt::KeyboardModifiers kbrdMod = qApp->keyboardModifiers(); раньше пробовал так: event->matches(QKeySequence::Paste); Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 19, 2010, 21:53 Вот что выдает на Ctrl+X, Ctrl+C, Ctrl+V
по дебагу: Код: qDebug() << "ctrlPresed = true; key: " << key <<" nativeScanCode " <<event->nativeScanCode () << " text " << event->text() <<" nativeVirtualKey: "<< event->nativeVirtualKey(); Debug: ctrlPresed = true; key: 16777249 nativeScanCode 29 text "" nativeVirtualKey: 17 Debug: ctrlPresed = true; key: 16777249 nativeScanCode 29 text "" nativeVirtualKey: 17 Фигня какая-то :((((((((((( Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: Akaiten от Январь 20, 2010, 09:45 Код
Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 20, 2010, 19:02 Разобрался в чем дело.
У меня стояла проверка на event->isAccepted() Почему-то в keyPressEvent( QKeyEvent * event ) она уже приходила акцептованной О_о.... Вроде не должно было быть.... Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: lit-uriy от Январь 20, 2010, 20:53 Разобрался в чем дело. если в событие попали, значит событие приняли - event->isAccepted() = истинна.У меня стояла проверка на event->isAccepted() Почему-то в keyPressEvent( QKeyEvent * event ) она уже приходила акцептованной О_о.... Вроде не должно было быть.... Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 20, 2010, 22:19 Разобрался в чем дело. если в событие попали, значит событие приняли - event->isAccepted() = истинна.У меня стояла проверка на event->isAccepted() Почему-то в keyPressEvent( QKeyEvent * event ) она уже приходила акцептованной О_о.... Вроде не должно было быть.... Впрочем пойду перечитаю про события, может чего упустил. Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: lit-uriy от Январь 20, 2010, 22:24 Цитировать Setting the accept parameter indicates that the event receiver wants the event. Unwanted events might be propagated to the parent widget. By default, isAccepted() is set to true, but don't rely on this as subclasses may choose to clear it in their constructor. и вообще не в одном из примеров нет проверки этого флага, зачем ты эту проверку делал?Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 20, 2010, 23:16 Цитировать Setting the accept parameter indicates that the event receiver wants the event. Unwanted events might be propagated to the parent widget. By default, isAccepted() is set to true, but don't rely on this as subclasses may choose to clear it in their constructor. и вообще не в одном из примеров нет проверки этого флага, зачем ты эту проверку делал?Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: lit-uriy от Январь 20, 2010, 23:56 >>если я уже отработал этот эвент
если отработал выдешь из функции. Название: Re: Как поймать шорткат Ctrl+V and Ctrl+C в keyPressEvent( QKeyEvent * event)? Отправлено: panAlexey от Январь 21, 2010, 10:17 >>если я уже отработал этот эвент Я использую несколько функций для обработки этого и не только этого эвента.если отработал выдешь из функции. По этому и опираюсь на изАкцептид(). |