Как заставить виджеты Qt исчезать или исчезать?

Я пытаюсь исчезнуть и исчезнутьQLabel или в этом отношении любойQWidget подкласс. Я пробовал сQGraphicsEffect, но, к сожалению, он хорошо работает только на Windows, а не на Mac.

Единственное другое решение, которое может работать как на Mac, так и на Windows, кажется, имеет свой собственныйpaintEvent где я установил непрозрачностьQPainter а также определитьQ_PROPERTY за "непрозрачность» в моем производномQLabel и измените непрозрачность до конца.QPropertyAnimation

Я вставляю ниже соответствующий фрагмент кода для вашей справки. Я все еще вижу проблему здесь - повторное использованиеQLabel::paintEvent Безразлично»Кажется, что это работает, это работает, только если я делаю полную пользовательскую живопись, используяQPainterно это некажется, легкий путь, и если мне нужно сделать это для каждогоQWidget подкласс я хочу исчезнуть, чтоэто кошмар. Пожалуйста, уточните, если я делаю какие-либо очевидные ошибки здесь.

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);
}

Ответы на вопрос(3)

Ваш ответ на вопрос