Показать / Скрыть QMenu

Я создал меню Пуск, унаследовав QMenu, Я хочу показать и скрыть это с помощью QPropertyAnimation в раздвижном стиле

Проблема:
Шоу & Hide работают нормально, когда я вызываю их явно (по нажатию кнопки запуска). Но когда я нажимаю за пределами меню «Пуск», оно мгновенно скрывается. Пожалуйста, предложите мне, что может быть причиной этого:

My class is StartMenuUiClass which inherited from QMenu
mptrobj_animation is QPropertyAnimation object

void StartMenuUiClass::show()
{
this->raise();
disconnect(mptrobj_animation,SIGNAL(finished()),this,SLOT(this_hide()));
QMenu::show();
mptrobj_animation->setDuration(500);
mptrobj_animation->setStartValue(*mptrobj_startPosition);
mptrobj_animation->setEndValue(*mptrobj_endPosition);
mptrobj_animation->start();
}

void StartMenuUiClass::hide()
{
mptrobj_animation->setDuration(450);
mptrobj_animation->setStartValue(*mptrobj_endPosition);
mptrobj_animation->setEndValue(*mptrobj_startPosition);
connect(mptrobj_animation,SIGNAL(finished()),this,SLOT(this_hide()));
mptrobj_animation->start();
}

void StartMenuUiClass::this_hide()
{
this->lower();
emit work_Done();
QMenu::hide();
}

-1

Решение

Я думаю, что если вы щелкнете за пределами своего виджета меню, он просто скрывается или закрывается без StartMenuUiClass::hide() функция. Вы можете попробовать справиться QMenu::hideEvent(QHideEvent *event) и / или QWidget::closeEvent(QCloseEvent *event), Что-то вроде этого:

StartMenuUiClass::closeEvent(QCloseEvent *event) // the same for hideEvent()
{
this->hide();
event->accept();
}
1

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

Других решений пока нет …

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