Я создал меню Пуск, унаследовав 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();
}
Я думаю, что если вы щелкнете за пределами своего виджета меню, он просто скрывается или закрывается без StartMenuUiClass::hide()
функция. Вы можете попробовать справиться QMenu::hideEvent(QHideEvent *event)
и / или QWidget::closeEvent(QCloseEvent *event)
, Что-то вроде этого:
StartMenuUiClass::closeEvent(QCloseEvent *event) // the same for hideEvent()
{
this->hide();
event->accept();
}
Других решений пока нет …