ncix
@ncix
Предприниматель

QAction::setMenu()?

Добрый день, коллеги!

Как вы догадались, вопрос касается Qt.


Проблема в следующем: QMenu, ассоциированное с QAction'ом(QAction::setMenu), отображаемым в тулбаре, при клике мышью появляется не сразу, а с задержкой, т.е. надо нажать и подержать кнопку пару секунд, тогда появится. Никто не сталкивался? Гугление не помогло.


Qt4.7.4, WinXP, Win7


UPD (resolved):

// Создаем меню
    QMenu * menu = new QMenu(this);
    menu->addAction("Act1");
    menu->addAction("Act2");
    menu->addAction("Act3");
    menu->addAction("Act4");
    menu->addAction("Act5");
//привязываем к действию, предварительно прикрепленному к ToolBar'у
    ui->actionTest->setMenu(menu);
// теперь вытаскиваем из тулбара виджет, соответствующий действию
    if(QToolButton * btn = qobject_cast<QToolButton *>(ui->mainToolBar->widgetForAction(ui->actionTest)))
//выставляем нужный popup-режим
        btn->setPopupMode(QToolButton::InstantPopup);
  • Вопрос задан
  • 3538 просмотров
Решения вопроса 1
Gorthauer87
@Gorthauer87
Программист
Там есть некоторый косяк в дизайне QToolBar'а в результате которого невозможно поменять роль, которая выставляется QToolButton'у, возникающему при добавлении действия на панель.
doc.qt.nokia.com/latest/qtoolbutton.html#ToolButtonPopupMode-enum
Можно на него влиять или вначале добавляя меню в действие а потом его на панель или наоборот.
Ну и возможно можно указатель на QToolButton, сгенеренную в результате addAction, вытащить.
Но в целом это косяк дизайна QToolBar'а.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы