У меня есть QWidget
, у которого QSvgWidget
как ребенок.
QVBoxLayout *loadingLayout = new QVBoxLayout(ui->loadingWidget);
loadingLayout->setMargin(0);
QSvgWidget *loadingSvg = new QSvgWidget(ui->loadingWidget);
loadingSvg->load(QString(":/extra/loader_2.svg"));
loadingSvg->renderer()->setFramesPerSecond(30);
loadingLayout->addWidget(loadingSvg, 0, Qt::AlignCenter);
ui->loadingWidget->setLayout(loadingLayout);
Мне нужен этот виджет loadingWidget
, чтобы исчезнуть, поэтому я решил использовать QPropertyAnimation
на QGraphicsOpacityEffect
, как я делал в прошлом.
QGraphicsOpacityEffect *opacity = new QGraphicsOpacityEffect(ui->loadingWidget);
opacity->setOpacity(1.0);
ui->loadingWidget->setGraphicsEffect(opacity);
loadingFadeOut = new QPropertyAnimation( opacity, "opacity" );
loadingFadeOut->setDuration(500);
loadingFadeOut->setStartValue(1.0);
loadingFadeOut->setEndValue(0.0);
loadingFadeOut->start(QPropertyAnimation::DeleteWhenStopped);
Однако программное обеспечение вылетает всякий раз, когда я звоню setGraphicsEffect
, и виджет имеет QSvgWidget
как дочерний элемент. Когда я удаляю QSvgWidget
, затухание происходит, как и ожидалось.
Я не могу придумать никакого обходного пути или исправления для этого. Есть идеи?
Спасибо за ваше время.