サブクラス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);
}