Здравствуйте!
В программе на Qt обнаружилось, что при нажатой клавише на клавиатуре от нее,
кроме повторяющегося сигнала pressed, постоянно идёт сигнал released с признаком
повтора, а при отпускании released испускается один раз как 1-й.
А почему released испускается вместе с pressed при нажатой клавише,
т.е. возникает событие keyReleasedEvent?
Можно ли это как-то запретить?
Пётр.
pressed and released
минимальный рабочий пример кода в студию...
Так тут нечего приводить. Есть
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()?
Пётр.
А почему released испускается вместе с pressed при нажатой клавише,т.е. возникает событие keyReleasedEvent?Можно ли это как-то запретить?
скорей всего особенность реализации... xev показывает, что иксы также делают...
глянь в исходники... наверняка Qt просто иксовые события в свои переделывает...
ЗЫ: не путай события с сигналами...
[quote="Peter⇓"]А почему released испускается вместе с pressed при нажатой клавише,т.е. возникает событие keyReleasedEvent?Можно ли это как-то запретить?
скорей всего особенность реализации... xev показывает, что иксы также делают...
глянь в исходники... наверняка Qt просто иксовые события в свои переделывает...
ЗЫ: не путай события с сигналами...[/quote]
Да, в xev то же самое, по-видимому, Qt просто транслирует эти сигналы в программу.
Всё равно непонятно, зачем так сделано.
Пётр.