Название: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: vertus от Июля 03, 2012, 09:10 Всем доброго времени суток!
Есть множество виджетов - панелей, на которых размещены Qt контролы. Переключение фокуса внутри этих панелей должно быть стандартным, а вот между панелями по Ctrl-Tab. Думаю, как лучше сделать. Роясь в документации, нашел вот такой вот атрибут виджета: Цитировать Qt::WA_KeyboardFocusChange. Set on a toplevel window when the users changes focus with the keyboard (tab, backtab, or shortcut). Получается можно установить окно которому будут приходить все события переключения фокуса по клавиатуре. Значит можно в этом же окне смотреть: 1. Если поменялся фокус, то следить чтобы он не вышел за пределы панели. 2. Если нажата комбинация Ctrl+Tab, то передовать фокус следующей панели. Вот такие мысли. Есть у кого ещё какие либо идеи/замечания по реализации задачи? Спасибо за внимание! Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: Bepec от Июля 03, 2012, 09:14 Походу эта неделя богата на желающих скопировать оперу :D
Самое простое на мой взгляд - перехват нажатия и отсылка сигнала. А там уже что хошь то и делай. Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: OKTA от Июля 03, 2012, 09:18 Да!!! перехватывать события это крайне увлекательно!! =D
Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: vertus от Июля 03, 2012, 09:19 Походу эта неделя богата на желающих скопировать оперу :D Это опера украла мою идею!!!! :D На самом деле никогда не юзал её. :) Цитировать Самое простое на мой взгляд - перехват нажатия и отсылка сигнала. А там уже что хошь то и делай. Сейчас вспоминаю, что есть проблема с последовательностью фокуса. Т.е. qt по умолчанию делает setTabOrder и поэтому когда внутри панелки пытаешься выставить на первый виджет фокус при следующей смене qt опять вернет его следующему виджету после последнего. Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: Bepec от Июля 03, 2012, 09:27 Сейчас вспоминаю, что есть проблема с последовательностью фокуса. Т.е. qt по умолчанию делает setTabOrder и поэтому когда внутри панелки пытаешься выставить на первый виджет фокус при следующей смене qt опять вернет его следующему виджету после последнего. Кхм. Ясли сено топор? А попонятнее написать с применением разума? :)Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: vertus от Июля 03, 2012, 09:30 Смотри. Есть две панельки. На одном три контрола, пронумеруем их 1, 2, 3 и на втором три - 4, 5, 6.
Если после 3 -го контрола я возвращаю фокус на 1, то при следующем нажатии qt вернет фокус на 4-ый. Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: Bepec от Июля 03, 2012, 09:34 Чегой то у тебя не того. По идее Qt начинает считать согласно таб ордеру. Там только проедыдущий и следущий виджет есть. Видимо у тебя там что-то не так :)
Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: OKTA от Июля 03, 2012, 09:35 А чего вручную порядок не задавать для пущей надежности?
Название: Re: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами. Отправлено: vertus от Июля 03, 2012, 09:37 Да хочется поменьше напильником работать.
|