Принудительно закрываем QMenu

По некоторым причинам мне нужно реализовать определенное меню в QToolBar. Моя цель — сохранить дизайн кнопки по умолчанию с выпадающим меню (значок + треугольник), но я хочу показать свой собственный QDialog (он выглядит как дерево), когда я нажимаю этот треугольник.

Итак, теперь у меня есть что-то вроде этого:

class CustomMenu : public QMenu
{
Q_OBJECT;

public:

CustomMenu(QWidget *parent);

signals:
void showMyMenu();
};

Вот как я создаю это меню и связываю его с необходимыми слотами:

CustomMenu *menu = new CustomMenu(tb);
connect(menu, SIGNAL(aboutToShow()), menu, SIGNAL(showMyMenu()));
connect(menu, SIGNAL(showMyMenu()), this, SLOT(execMyMenu()));
tbButton->setMenu(menu);
tb->addAction(tbButton);

Вот слот:

void MyProjectClass::execMyMenu()
{

CustomMenu *cm = (CustomMenu*)sender();

CustomMenuWidget* myMenu = new CustomMenuWidget();
myMenu->exec();

cm->hide();

delete myMenu;
}

Проблема в том, что вызов hide() за CustomMenu не заставляет треугольник становиться не нажатым, и он все еще удерживает фокус на кнопке. Это делает невозможным нажатие чего-либо еще, пока вы не избавитесь от фокуса от этой кнопки.

Все, что я хочу, — это заменить выпадающее меню по умолчанию своим собственным.

Это кажется очень простым, но я, наверное, что-то упустил. Что я делаю неправильно?

я использую Qt 4.8.6

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]