Название: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 14:49 Здравствуйте. Имеется код следующего вида:
Код: QMenu *menu = new QMenu(_R("&Файл"), this); Программа запускается, меню вызывается по нажатию сочетания клавиш Alt + Ф. А при нажатии сочетания клавиш Alt + A (латинская А) меню не открывается. В предыдущих версиях Qt эта проблема легко решалась при помощи акселераторов QAccel. В чевертой версии Qt этот класс отсутствует. Гуру, поделитесь пожалуйста информацией, как решить эту проблему? Пробовал Код: QMenu *menu = new QMenu(_R("&Файл»"), this); не помогает. Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Пантер от Июль 01, 2009, 16:20 QMenu *menu = new QMenu(tr("&File"), this);
И пользуемся переводом. Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 16:44 Пробовал и так. Лингвисту указал, чтобы переводил &File в &Файл. Меню открывается по нажатию Alt+Ф, а по нажатию Alt+A не открывается.
Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 17:37 Проблема в том, что меню открывается только в том случае, если выбрана русская раскладка. Если нажимаем на ту же самую клавишу в латинской раскладке, меню не открывается.
Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Пантер от Июль 01, 2009, 17:58 Дык акселератор и не должен срабатывать в другой раскладке.
Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 18:18 Хорошо, тогда сформулирую вопрос по-другому. Как сделать так, чтобы меню открывалось независимо от раскладки?
Название: Re: Акселераторы в Qt 4.4.3 Отправлено: ритт от Июль 01, 2009, 19:27 Цитировать menu->menuAction()->setShortcut(QKeySequence("Qt::ALT+A")); это что за зверь? сам придумал?!rtfm: QKeySequence Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 22:41 Дело здесь вовсе не в QKeySequence, а в том, что метод setShortcut в данном случае не работает. Вот и хотелось бы узнать, каким образом можно заставить открываться меню независимо от раскладки клавиатуры. Неужели никто с такой проблемой не сталкивался? А она возникала неужели трудно подсказать решение? Для того чтобы отправить мануалы читать форум не нужен. Мне почему-то казалось что на форумы и существуют для того, чтобы находить ответы на возникающие вопросы.
Название: Re: Акселераторы в Qt 4.4.3 Отправлено: BRE от Июль 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); Название: Re: Акселераторы в Qt 4.4.3 Отправлено: Maverick от Июль 01, 2009, 23:05 Я перепробовал кучу вариантов использования QKeySequence, в том числе и QKeySequence(QKeySequence::Print). Согласен, то, что я привел, кривовато, но проблема моя совсем не в этом. Использование QKeySequence в данном случае не помогает открыть меню. Например, для того, чтобы по Ctrl + P напечатать документ, пишем следующее:
Код: QAction actionPrint = new QAction(QIcon(srcPath + "/fileprint.png"), tr("&Print..."), this); Код: menu->menuAction()->setShortcut(QKeySequence::Print); Название: Re: Акселераторы в Qt 4.4.3 Отправлено: BRE от Июль 01, 2009, 23:10 А попробуй посмотреть на:
Qt::ShortcutContext |