crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> hotkeys на кнопки внутри QTabWidget
Rocky
  опции профиля:
сообщение 19.1.2011, 11:58
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Всем привет!

Решил сделать систему хоткеев в программе. На форме есть QTabWidget. На каждой вкладке - кнопки. В дизайнере поставил каждой кнопке свой Shortcut. Вроде все правильно. При попытке нажать хоткей кнопки, которая находится на текущей вкладке QTabWidget - все работает. А вот если нажимать хоткей кнопки, находящейся на неактивированной (скрытой) вкладке - то не работает (до тех пор, пока не сделать эту вкладку текущей)....

Из-за чего такое поведение? Просто я ожидал, что внутри диалогового окна будут работать все заданные хоткеи. Или получается что QTabWidget - как бы обладает модальностью текущей вкладки по отношению к другим при ее активации? И поэтому не работают хоткеи с других вкладок? Как это можно исправить чтобы работало как задумано? Потому что идея хоткея как раз в том, чтобы никуда не переключаться и не искать кнопку с нужным названием. Как вариант, ловить все нужные сочетания в keyPressEvent диалогового окна.. Или можно как-то еще?

Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.1.2011, 17:44
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Rocky @ 19.1.2011, 13:58) *
Из-за чего такое поведение?
виджет не активен - события не принимает.
Если нужен "глобальный" вариант, устанавливай горячие кнопки главному окну или виджету контейнеру, который всегда виден.

Для понимания простой пример:
попробуй окно одной программы закрыть окном другой программы и воспользоваться комбинацией клавиш, например, <Ctrl>+<C>.
Какая программа эту комбинацию поймает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 19.1.2011, 17:48
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ясно.

Цитата(Litkevich Yuriy @ 19.1.2011, 18:44) *
Если нужен "глобальный" вариант, устанавливай горячие кнопки главному окну или виджету контейнеру, который всегда виден.

А можно пример (название метода), как это сделать? По global hotkeys гуглятся вообще глобальные..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.1.2011, 18:58
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Rocky @ 19.1.2011, 19:48) *
А можно пример
Цитата(Rocky @ 19.1.2011, 19:48) *
устанавливай горячие кнопки главному окну
;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 19.1.2011, 22:53
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Вобщем если кому-то понадобится, я сделал так (в конструкторе главного виджета)
new QShortcut(QKeySequence("Ctrl+S"), this, SLOT(OnShowDialogSaveSpectr()));

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 8:07