Russian Qt Forum
Сентябрь 30, 2024, 10:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Акселераторы в Qt 4.4.3  (Прочитано 7545 раз)
Maverick
Гость
« : Июль 01, 2009, 14:49 »

Здравствуйте. Имеется код следующего вида:
Код:
QMenu *menu = new QMenu(_R("&Файл"), this);
    menuBar()->addMenu(menu);

Программа запускается, меню вызывается по нажатию сочетания клавиш Alt + Ф. А при нажатии сочетания клавиш Alt + A (латинская А) меню не открывается. В предыдущих версиях Qt эта проблема легко решалась при помощи акселераторов QAccel. В чевертой версии Qt этот класс отсутствует. Гуру, поделитесь пожалуйста информацией, как решить эту проблему? Пробовал
Код:
    QMenu *menu = new QMenu(_R("&Файл»"), this);
menu->menuAction()->setShortcut(QKeySequence("Qt::ALT+A"));
    menuBar()->addMenu(menu);

не помогает.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июль 01, 2009, 16:20 »

QMenu *menu = new QMenu(tr("&File"), this);
И пользуемся переводом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Maverick
Гость
« Ответ #2 : Июль 01, 2009, 16:44 »

Пробовал и так. Лингвисту указал, чтобы переводил &File  в &Файл. Меню открывается по нажатию Alt+Ф, а по нажатию Alt+A не открывается.
Записан
Maverick
Гость
« Ответ #3 : Июль 01, 2009, 17:37 »

Проблема в том, что меню открывается только в том случае, если выбрана русская раскладка. Если нажимаем на ту же самую клавишу в латинской раскладке, меню не открывается.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Июль 01, 2009, 17:58 »

Дык акселератор и не должен срабатывать в другой раскладке.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Maverick
Гость
« Ответ #5 : Июль 01, 2009, 18:18 »

Хорошо, тогда сформулирую вопрос по-другому. Как сделать так, чтобы меню открывалось независимо от раскладки?
Записан
ритт
Гость
« Ответ #6 : Июль 01, 2009, 19:27 »

Цитировать
menu->menuAction()->setShortcut(QKeySequence("Qt::ALT+A"));
это что за зверь? сам придумал?
!rtfm: QKeySequence
Записан
Maverick
Гость
« Ответ #7 : Июль 01, 2009, 22:41 »

Дело здесь вовсе не в QKeySequence, а в том, что метод setShortcut в данном случае не работает. Вот и хотелось бы узнать, каким образом можно заставить открываться меню независимо от раскладки клавиатуры.  Неужели никто с такой проблемой не сталкивался? А она возникала неужели трудно подсказать решение? Для того чтобы отправить мануалы читать форум не нужен. Мне почему-то казалось что на форумы и существуют для того, чтобы находить ответы на возникающие вопросы.
Записан
BRE
Гость
« Ответ #8 : Июль 01, 2009, 22:48 »

Мне кажется Константин говорит немного о другом...
Внимательно сравни следующие строчки (в месте QKeySequence):

Цитировать
menu->menuAction()->setShortcut(QKeySequence("Qt::ALT+A"));

Цитировать
QKeySequence(QKeySequence::Print);
 QKeySequence(tr("Ctrl+P"));
 QKeySequence(tr("Ctrl+p"));
 QKeySequence(Qt::CTRL + Qt::Key_P);
Записан
Maverick
Гость
« Ответ #9 : Июль 01, 2009, 23:05 »

Я перепробовал кучу вариантов использования QKeySequence, в том числе и QKeySequence(QKeySequence::Print). Согласен, то, что я привел, кривовато, но проблема моя совсем не в этом. Использование QKeySequence в данном случае не помогает открыть меню. Например, для того, чтобы по Ctrl + P напечатать документ, пишем следующее:
Код:
QAction actionPrint = new QAction(QIcon(srcPath + "/fileprint.png"), tr("&Print..."), this);
actionPrint ->setShortcut(QKeySequence::Print);
Все прекрасно работает. Документ печатается по нажатию Ctrl+P. А если написать
Код:
menu->menuAction()->setShortcut(QKeySequence::Print);
меню по Ctrl+P открыть не получится. Следовательно, либо я допустил ошибку в вышеприведенном коде, либо меню нужно открывать по-другому. Вот и возникает вопрос, где я накосячил? Если кто знает, не сочтите за труд помочь в решении возникшей проблемы.
Записан
BRE
Гость
« Ответ #10 : Июль 01, 2009, 23:10 »

А попробуй посмотреть на:
Qt::ShortcutContext
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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