Russian Qt Forum
Августа 27, 2025, 22:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Переключение фокуса. Tab внутри виджета, Ctrl-Tab - между виджетами.  (Прочитано 5676 раз)
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, то передовать фокус следующей панели.

Вот такие мысли.

Есть у кого ещё какие либо идеи/замечания по реализации задачи?

Спасибо за внимание!
Записан
Bepec
Гость
« Ответ #1 : Июля 03, 2012, 09:14 »

Походу эта неделя богата на желающих скопировать оперу Веселый

Самое простое на мой взгляд - перехват нажатия и отсылка сигнала. А там уже что хошь то и делай.
Записан
OKTA
Гость
« Ответ #2 : Июля 03, 2012, 09:18 »

Да!!! перехватывать события это крайне увлекательно!! =D
Записан
vertus
Гость
« Ответ #3 : Июля 03, 2012, 09:19 »

Походу эта неделя богата на желающих скопировать оперу Веселый

Это опера украла мою идею!!!! Веселый На самом деле никогда не юзал её. Улыбающийся

Цитировать
Самое простое на мой взгляд - перехват нажатия и отсылка сигнала. А там уже что хошь то и делай.

Сейчас вспоминаю, что есть проблема с последовательностью фокуса. Т.е. qt по умолчанию делает setTabOrder и поэтому когда внутри панелки пытаешься выставить на первый виджет фокус при следующей смене qt опять вернет его следующему виджету после последнего.
Записан
Bepec
Гость
« Ответ #4 : Июля 03, 2012, 09:27 »

Сейчас вспоминаю, что есть проблема с последовательностью фокуса. Т.е. qt по умолчанию делает setTabOrder и поэтому когда внутри панелки пытаешься выставить на первый виджет фокус при следующей смене qt опять вернет его следующему виджету после последнего.
Кхм. Ясли сено топор? А попонятнее написать с применением разума? Улыбающийся
Записан
vertus
Гость
« Ответ #5 : Июля 03, 2012, 09:30 »

Смотри. Есть две панельки. На одном три контрола, пронумеруем их 1, 2, 3 и на втором три - 4, 5, 6.

Если после 3 -го контрола я возвращаю фокус на 1, то при следующем нажатии qt вернет фокус на 4-ый.
Записан
Bepec
Гость
« Ответ #6 : Июля 03, 2012, 09:34 »

Чегой то у тебя не того. По идее Qt начинает считать согласно таб ордеру. Там только проедыдущий и следущий виджет есть. Видимо у тебя там что-то не так Улыбающийся
Записан
OKTA
Гость
« Ответ #7 : Июля 03, 2012, 09:35 »

А чего вручную порядок не задавать для пущей надежности?
Записан
vertus
Гость
« Ответ #8 : Июля 03, 2012, 09:37 »

Да хочется поменьше напильником работать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.025 секунд. Запросов: 18.