Название: Вопрос по меню Отправлено: agm от Мая 18, 2010, 14:04 Есть менюшка, примерно такая
menuBar = new QMenuBar(this); menuBar->setObjectName("menuBar"); p1 = new QMenu(QString::fromLocal8Bit("Настройки")); menuBar->addMenu(p1); и т.д. нужно чтобы по нажатию клавиши в виджете клавиши (скажем F10) это меню активировалось и открывалось подменю, короче что б можно было работать с меню с клавиатуры а не только мышкой. Решение может быть таким: в обработчике нажатий клавиши вызываем p1->exec(); но если использовать метод QAction * exec () то подменю появляется в верхнем левом углу экрана, если брать метод QAction * exec ( const QPoint & p, QAction * action = 0 ), то непонятно как определить нужный QPoint. Может быть есть другие подходы? Название: Re: Вопрос по меню Отправлено: crossly от Мая 18, 2010, 14:18 QShortcut
Название: Re: Вопрос по меню Отправлено: MoPDoBoPoT от Мая 18, 2010, 15:00 нужно чтобы по нажатию клавиши в виджете клавиши (скажем F10) это меню активировалось и открывалось подменю, короче что б можно было работать с меню с клавиатуры а не только мышкой. Вообще, для таких целей используют "символы быстрого доступа" (в надписи контрола перед этим самым символом ставится знак амперанда):p1 = new QMenu(QString::fromLocal8Bit("&Настройки")); Ну а вообще, если хочется сделать через F10 и т.п., то можно попробовать воспользоваться тем, что метод QMenuBar::addMenu() возвращает указатель на QAction (повесить на него Shortcut): Код
Название: Re: Вопрос по меню Отправлено: agm от Мая 18, 2010, 15:35 За подсказку относительно указателя на QAction, который возвращает метод addMenu спасибо, обязательно учту.
Но проблемма не в этом. кто-нибудь скажет всеже - как программно (не мышкой) вызвать подменю и поставить фокус не его первом пункте? обект QShortcut просто задает комбинацию клавиш по которой что то делаем. pa1 = new QAction(QString::fromLocal8Bit("Коннект"), this); pa1->setShortcut(tr("Ctrl+K")); connect(pa1, SIGNAL(triggered()), this, SLOT(connectDB())); p1->addAction(pa1); Название: Re: Вопрос по меню Отправлено: lit-uriy от Мая 18, 2010, 16:11 меню - это виджет, вызывай show() и он появится
Название: Re: Вопрос по меню Отправлено: agm от Мая 18, 2010, 16:39 примерчик или ссылочку можно?
Название: Re: Вопрос по меню Отправлено: NicK от Мая 18, 2010, 18:31 нужно чтобы по нажатию клавиши в виджете клавиши (скажем F10) это меню активировалось и открывалось подменю, короче что б можно было работать с меню с клавиатуры а не только мышкой. Вообще, для таких целей используют "символы быстрого доступа" (в надписи контрола перед этим самым символом ставится знак амперанда):p1 = new QMenu(QString::fromLocal8Bit("&Настройки")); В русской локализации почему-то в Kubuntu 10.04 и предыдущей ни одно KDE-шное и Qt4-шное () приложение не показывает меню по Alt+подчеркнутая буква. Если приложение не локализованно, то акселераторы на английском срабатывают без проблем. Как бороться - хз. :( В винде такой проблемы нет. Название: Re: Вопрос по меню Отправлено: agm от Мая 19, 2010, 08:15 Считаю тема закрыта, спасибо всем за ответы
Название: Re: Вопрос по меню Отправлено: Kverde от Июня 05, 2011, 15:03 В русской локализации почему-то в Kubuntu 10.04 и предыдущей ни одно KDE-шное и Qt4-шное () приложение не показывает меню по Alt+подчеркнутая буква. Если приложение не локализованно, то акселераторы на английском срабатывают без проблем. Как бороться - хз. :( В винде такой проблемы нет. Как я понимаю, эта проблема так и не решена? Или уже есть решение? |