Toolbar(SelectionToolBar) разрешено LeftToolbarArea. и в настоящее время скрыто. Когда я наведу указатель мыши на левую границу приложения, появится анимация, определенная для непрозрачности. Это нормально работает. Но проблема в том, что когда я нахожу указатель мыши, т. Е. Нахожусь на toolbuttons, все кнопки инструментов скрываются, хотя я могу нажимать кнопки, это работает. Скрывается только отображение кнопки (просмотр / просмотр). Я подозреваю, что "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();
}
0
V. Purbia 7 Июн 2018 в 07:42

1 ответ

Лучший ответ

Это ОШИБКА

Это ОШИБКА, о которой упоминал @ KYL3R

Демо для воспроизведения:

#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);
1
JustWe 8 Июн 2018 в 00:11