Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Август 23, 2015, 19:45



Название: Qt 5.5.0 поломали Key press events с модификаторами?
Отправлено: kuzulis от Август 23, 2015, 19:45
Всем привет.

Кажется в Qt 5.5.0 некорректно возвращается event->key() при любом нажатом модивикаторе..

Например, вместо key: 49, 50 или 51 всегда возвращается 16777248 (при нажатом Shift).. т.е. всегда
возвращается код клавиши Shift...

Блин, также не работают примеры из: "Examples\Qt-5.5\multimediawidgets\player\".. т.е. не работают Alt + Enter (переход в FullScreen)..

Может кто проверить?

* Windows 10 x64
* Qt 5.5.0 + MSVC2013 x32


Название: Re: Qt 5.5.0 поломали Key press events с модификаторами?
Отправлено: PimenS от Август 23, 2015, 21:23
Windows 7 x64
Qt 5.5.0 + Mingw

Код:
qDebug() << event->modifiers() << isFullScreen() << event->key();

Цитировать
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 77
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 74
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 72
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 71
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 70
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 68
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 83
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 70
QFlags<Qt::KeyboardModifiers>(ShiftModifier) false 71


Название: Re: Qt 5.5.0 поломали Key press events с модификаторами?
Отправлено: kuzulis от Август 23, 2015, 22:05
А нажатие Shift + любую цифру на цифровой клавиатуре (при включенной NumLock) что выводит?

у меня:

Цитировать
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777233
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248

при Shift + 1 (на цифровой клаве), т.е. код 16777233 это Key_End.. в не зависимости от того, включен ли NumLock или нет.


Название: Re: Qt 5.5.0 поломали Key press events с модификаторами?
Отправлено: PimenS от Август 23, 2015, 22:29
Не думаю, что это баг. Скорее всего поменяли, какие-то настройки виджетов по умолчанию.

У меня разные виджеты по разному отрабатывают. Пример нажатия на цифровой клавиатуре (при включенной NumLock), цифры 1, 2, 3, 4, 5

Вар. 1. Пример player.

Цитировать
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777233
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777237
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777239
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777234
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777227
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248

Вар. 2. Виджет наследованный от QWidget.

Цитировать
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777233
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777227
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248


Т.е при нажатии 2, 3, 4 с нажатым Shift, вообще выдает 16777248, а 1 и 5 16777233 и 16777227 соответственно.

ЗЫ. А у наследника QMainWindow

Цитировать
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777233
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777237
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777234
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248
QFlags<Qt::KeyboardModifiers>(KeypadModifier) 16777227
QFlags<Qt::KeyboardModifiers>(ShiftModifier) 16777248

Здесь только у цифры 3 получается 16777248.