我正在使用Qt for Android开发一个简单的测试应用程序。我试图通过显示半透明圆圈来为屏幕上的每个用户触摸设置动画,例如,将半径从0增加到100。
我在所有小部件上添加了一个自定义QLabel。我正在尝试使用QPropertyAnimation为自定义属性更新它的QPixmap动画
Q_PROPERTY(QRect circleGeometry READ getCircleGeometry WRITE setCircleGeometry)
setter是:
void CircleLabel::setCircleGeometry(QRect circleGeometry)
{
QPixmap pixmap(this->size());
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setOpacity(0.2);
painter.setPen(QPen(Qt::transparent));
painter.setBrush(QBrush(Qt::white));
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(circleGeometry);
this->setPixmap(pixmap);
}
我知道,setter对于动画而言太重了,所以它在我的Android设备上运行得很慢。 能否请您建议我如何修改动画以使其快速顺畅。
答案 0 :(得分:0)
所以...我的解决方案是在应用程序启动时创建一次QPixmaps矢量,然后我的CircleLabel :: setCircleGeometry将如下所示:
void CircleLabel::setCircleGeometry(int currentIdx)
{
this->setPixmap(preGeneratedPixmaps[currentIdx]);
}