Como fazer com que os widgets do Qt desapareçam ou desapareçam?

Eu estou tentando desaparecer e desaparecerQLabel ou para esse assunto qualquerQWidget subclasse. Eu tentei comQGraphicsEffect, mas infelizmente funciona bem apenas no Windows e não no Mac.

A única outra solução que pode funcionar tanto no Mac quanto no Windows parece ter meu própriopaintEvent onde eu defino a opacidade deQPainter e também definir umQ_PROPERTY para "opacidade" no meu derivadoQLabel e mudar a opacidade atravésQPropertyAnimation.

Estou colando abaixo do snippet de código relevante para sua referência. Eu ainda vejo um problema aqui - reutilizando oQLabel::paintEvent parece não estar funcionando, só funciona se eu fizer uma pintura personalizada completa usando oQPainter, mas isso não parece ser uma maneira fácil e se eu precisar fazer isso para cadaQWidget subclasse eu quero desaparecer, isso é um pesadelo. Por favor, esclareça se estou cometendo algum erro óbvio aqui.

Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)

void MyLabel::setOpacity(qreal value) {
    m_Opacity = value;
    repaint();
}

void MyLabel::paintEvent((QPaintEvent *pe) {
    QPainter p;
    p.begin(this);
    p.setOpacity();
    QLabel::paintEvent(pe);
    p.end();
}

void MyLabel::startFadeOutAnimation() {
    QPropertyAnimation *anim = new QPropertyAnimation(this, "opacity");
    anim->setDuration(800);
    anim->setStartValue(1.0);
    anim->setEndValue(0.0);
    anim->setEasingCurve(QEasingCurve::OutQuad);
    anim->start(QAbstractAnimation::DeleteWhenStopped);
}

questionAnswers(3)

yourAnswerToTheQuestion