LinuxForum.Fans
Тема

pressed and released

Автор: Peter 5 сообщений 1444 просмотров
#328060

Здравствуйте!

В программе на Qt обнаружилось, что при нажатой клавише на клавиатуре от нее,
кроме повторяющегося сигнала pressed, постоянно идёт сигнал released с признаком
повтора, а при отпускании released испускается один раз как 1-й.

А почему released испускается вместе с pressed при нажатой клавише,
т.е. возникает событие keyReleasedEvent?
Можно ли это как-то запретить?

Пётр.

#328080

минимальный рабочий пример кода в студию...

#328090

Так тут нечего приводить. Есть

text

protected:
void keyPressedEvent(QKeyEvent *);
void keyReleasedEvent(QKeyEvent *);

и при нажатой клавише попеременно вызываются обе.
При 1-м вызове keyPressedEvent(QKeyEvent *ke) ke->isAutoRepeat() возвращает false,
при последующих - true, как и должно быть, но при этом вызывается также
keyReleasedEvent(QKeyEvent *ke), для неё наоборот - при последнем вызове
ke->isAutoRepeat() возвращает false, что правильно, а при всех предидущих - true,
но почему она вызывается при нажатой клавише? Почему сигнал released()
испускается при нажатой клавише? Зачем Qt посылает released(), если она непрерывно
посылыет pressed()?

Пётр.

#328112
"Peter⇓" написал:
А почему released испускается вместе с pressed при нажатой клавише,т.е. возникает событие keyReleasedEvent?Можно ли это как-то запретить?

скорей всего особенность реализации... xev показывает, что иксы также делают...
глянь в исходники... наверняка Qt просто иксовые события в свои переделывает...

ЗЫ: не путай события с сигналами...

#328117
Fat-Zer написал:
[quote="Peter⇓"]А почему released испускается вместе с pressed при нажатой клавише,т.е. возникает событие keyReleasedEvent?Можно ли это как-то запретить?

скорей всего особенность реализации... xev показывает, что иксы также делают...
глянь в исходники... наверняка Qt просто иксовые события в свои переделывает...

ЗЫ: не путай события с сигналами...[/quote]
Да, в xev то же самое, по-видимому, Qt просто транслирует эти сигналы в программу.
Всё равно непонятно, зачем так сделано.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.