Название: вопрос к eventFilter(обработка клавиатуры) Отправлено: nik135 от Апрель 26, 2008, 14:09 Потребовалось организовать управление с клавиатуры, попробовал через eventFilter, вроде работает, но по одной клавише, т.е. если в нажимать последовательно клавиши, то все работает, а если одновременно две или три, то работает только как будто нажата одна :-(
как поймать одновременное нажатие нескольких клавиш? Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: Sergeich от Апрель 26, 2008, 14:20 см. QShortcut
Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: nik135 от Апрель 26, 2008, 15:23 Попробовал, не помогло, два Shortcut'a одновременно не выполняются.
Еще идеи? зы. можно попробовать конечно описать все возможные сочетания клавиш, но мне кажется это не есть гуд... Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: Sergeich от Апрель 26, 2008, 21:11 Чей-то я не понял что ты решил замутить. Кинь примером.
Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: nik135 от Апрель 27, 2008, 10:53 Код:
Так вот, при одновременнном нажатии двух клавиш, этот код работает, как будто нажали одну из этих двух. И при использовании QShortcut происходит то же самое. Скорее всего я дурак,и мне хотелось бы чтобы мне пояснили, где именно. Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: Sergey B. от Апрель 27, 2008, 12:06 Не совсем понятно, что нужно в конечном итоге... Сформулируйте точнее.
Если я правильно понял... В Qt есть возможность проверять модификаторы. Поищите на эту тему. У меня это делается вот так: Код: if (event->type() == QEvent::KeyPress) Это для обхода элементов диалога, по клавише Enter. Статус модификатора проверяется здесь. Код: if (keyEvent->modifiers() & Qt::ControlModifier) Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: nik135 от Апрель 27, 2008, 16:48 Не совсем понятно, что нужно в конечном итоге... Сформулируйте точнее. Если я правильно понял... В Qt есть возможность проверять модификаторы. Поищите на эту тему. Сергей, хочется повесить по определенному действию на каждую клавишу клавиатуры. Т.е. нажатие на клавишу "W"- Одно действие(сигнал), нажатие на клавишу "A"- другое действие(сигнал). Если нажимать одну клавишу, или одну или вторую, то все работает. Если одновременно нажать "W" и "A" - работает либо сигнал клавиши "W" либо сигнал клавиши "A". А хочется, чтобы происходило два сигнала. Вот. Может, я не очень ясно выражаю мысли, если не ясно, я еще раз попытаюсь объяснить. :) Название: Re: вопрос к eventFilter(обработка клавиатуры) Отправлено: Sergey B. от Апрель 27, 2008, 17:16 Не то?
Код: void QWidget::grabKeyboard () This widget receives all keyboard events until releaseKeyboard() is called; other widgets get no keyboard events at all. Mouse events are not affected. Use grabMouse() if you want to grab that. The focus widget is not affected, except that it doesn't receive any keyboard events. setFocus() moves the focus as usual, but the new focus widget receives keyboard events only after releaseKeyboard() is called. If a different widget is currently grabbing keyboard input, that widget's grab is released first. See also releaseKeyboard(), grabMouse(), releaseMouse(), and focusWidget(). |