基于不透明度的Qt Toolbar动画

Qt Toolbar animation based on opacity

Toolbar(SelectionToolBar) 允许 LeftToolbarArea。并且目前是隐藏的。当我将鼠标移到应用程序的左边框时,它会附带在不透明度上定义的动画。这工作正常。但问题是当我将鼠标移到 toolbuttons 上时,即悬停在 toolbuttons 上时,所有工具按钮都会隐藏,尽管我可以单击按钮,但它可以正常工作。只有 toobutton display(view/look) 被隐藏了。我怀疑 "fade_effect" 它超出了范围。有什么解决办法吗?

bool evenfilter(...)
{
 ... 
  QGraphicsOpacityEffect* fade_effect = new QGraphicsOpacityEffect();
  ui->SelectionToolbar->setGraphicsEffect(fade_effect);
  QPropertyAnimation *animation = new QPropertyAnimation(fade_effect, "opacity");
  animation->setEasingCurve(QEasingCurve::InOutQuad);
  animation->setDuration(3000);
  animation->setStartValue(0.01);
  animation->setEndValue(1.0);
  animation->start(QPropertyAnimation::DeleteWhenStopped);
//animation->start();
  ui->SelectionToolbar->show();
}

这应该是个BUG

这是@KYL3R 提到的 BUG

要重现的演示:

#include <QToolBar>
#include <QToolButton>
#include <QGraphicsOpacityEffect>
#include <QPropertyAnimation>

class ToolBar : public QToolBar
{
    Q_OBJECT
public:
    ToolBar(QWidget *parent = Q_NULLPTR) :
        QToolBar(parent)
    {
        setGraphicsEffect(&mFadeEffect);
        mFadeAnimation.setTargetObject(&mFadeEffect);
        mFadeAnimation.setPropertyName("opacity");
        mFadeAnimation.setStartValue(0.0);
        mFadeAnimation.setEndValue(1);
        mFadeAnimation.setDuration(3000);
        mFadeAnimation.start();
    }
    virtual ~ToolBar() {}

private:
    QGraphicsOpacityEffect  mFadeEffect;
    QPropertyAnimation      mFadeAnimation;
};

auto toolbar = new ToolBar();
toolbar->addAction("action 1");
toolbar->addAction("action 2");
toolbar->addAction("action 3");

addToolBar(Qt::LeftToolBarArea, toolbar);

临时解决方案:

改变

mFadeAnimation.setEndValue(1);

mFadeAnimation.setEndValue(0.99);