我有一个QWidget
的子类,它是一个弹出窗口小部件。我想在它显示和消失时添加一些动画。所以我重新实施了showEvent(QShowEvent * event)
和hideEvent
,并在函数中添加了一些QPropertyAnimation
。 showEvent
对我来说很好,但hideEvent
没有。因为
隐藏事件会在隐藏后立即发送到窗口小部件。
关于如何做的任何想法?
更新
我认为这不是正确的理由。当我使用Nejat的解决方案时。节目部分有效。但是当我在小部件外面点击时。它立即消失。
答案 0 :(得分:1)
您可以覆盖窗口小部件中的eventFilter
并检查QEvent::Show
和QEvent::Close
个事件。
bool MyWidget::eventFilter(QObject * obj, QEvent * event)
{
if(obj == this && event->type() == QEvent::Show)
{
//about to show
}
else if(obj == this && event->type() == QEvent::Close)
{
//about to close
}
return false;
}
您还应该通过以下方式在构造函数中安装事件过滤器:
this->installEventFilter(this);
答案 1 :(得分:1)