QGraphicsOpacityEffect на виджет с дочерним элементом QSvgWidget - PullRequest
0 голосов
/ 08 июня 2019

У меня есть 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, затухание происходит, как и ожидалось.

Я не могу придумать никакого обходного пути или исправления для этого. Есть идеи?

Спасибо за ваше время.

...