Название: Qt GUI - необходимо управлять работой кнопок с клавиатуры. Как? Отправлено: idov от Январь 25, 2013, 10:00 Есть программа на С++ под Qt GUI.
Небольшое окошко, в нем по вертикали несколько кнопок(QPushButton) и несколько пар QDial-QProgressBar. Управление от мыша было налажено сразу и без проблем, но необходимо управление от клавиатуры. Когда запускаю программу, вижу, как от табуляции смещается фокус от элемента к элементу. При этом, когда фокус на паре QDial-QProgressBar, отлично идет изменение значений по стрелочкам (стрелка вправо, или вверх - увеличение значения, стрелка влево или вниз - уменьшение значения). Когда фокус переходит на кнопки - я тоже вижу, что цвет кнопки изменился. Но программно понять, на какой именно из кнопок я стою - не могу. Попытка задействовать event провалилась, табуляция почему-то не обрабатывается, keyPressEvent вообще ничего не ловит. В обработке event зато отлавливается Enter/Return и неслужебные клавиши тоже попадает на обработку. А вместо TAB, arrowLeft и пр. - попадаются event'ы paint и repaint, сами клавиши обрабатываются где-то под программой, на более низком уровне(?). Если кто знает, как можно, обращаясь к элементу QPushButton узнать - стоит ли на нем фокус, или отмечена ли как-то эта кнопка - прошу помочь. Название: Re: Qt GUI - необходимо управлять работой кнопок с клавиатуры. Как? Отправлено: Bepec от Январь 25, 2013, 10:03 focus : const bool;
isChecked(); Нет пояснения какого управления вы хотите от кнопок. Нет пояснения как помечается ваша кнопка. PS больше конкретики и фактов и ваш велосипед обрастёт новыми колёсными парами. Название: Re: Qt GUI - необходимо управлять работой кнопок с клавиатуры. Как? Отправлено: lighting от Январь 25, 2013, 10:04 Если я правильно понял вопрос то вот http://doc.qt.digia.com/qt/qapplication.html#focusWidget
Название: Re: Qt GUI - необходимо управлять работой кнопок с клавиатуры. Как? Отправлено: idov от Январь 25, 2013, 10:11 focus : const bool; Спасибо за совет, буду посмотреть.isChecked(); Нет пояснения какого управления вы хотите от кнопок. Нет пояснения как помечается ваша кнопка. PS больше конкретики и фактов и ваш велосипед обрастёт новыми колёсными парами. А что именно необходимо - чтобы если фокус на паре QDial-QProgressBar, то ничего бы не делалось, а если фокус находится на QPushButton - чтобы отрабатывал какой-нибудь слот. А так - неслужебные клавиши отрабатывают по event-перехвату, Tab де-факто меняет значение фокуса, но в обработке event не всплывает, а Enter ловится - но я не знаю, какая кнопка активна, чтобы кому-то передать управление. Название: Re: Qt GUI - необходимо управлять работой кнопок с клавиатуры. Как? Отправлено: idov от Январь 25, 2013, 15:25 Большое спасибо всем помогавшим.
Проблема решена с вашей помощью, оказалось, что при отработке event c Qt::Key_Enter | Key_Return достаточно проверить if (focusWidget() == buttonN) -- если по Enter попали с фокусом тут, значит кнопка потенциально активна. Можно обрабатывать. Еще раз большое спасибо. |