gpt4 book ai didi

Qt动画

转载 作者:行者123 更新时间:2023-12-04 07:07:24 24 4
gpt4 key购买 nike

我无法理解 QGraphicsItemAnimation 的 setScaleAt 函数是如何工作的。这是我正在使用的代码:

    QGraphicsItem *item=scene.addEllipse(400, 300, 100, 100, QPen(), QBrush(Qt::SolidPattern));
QTimeLine *timeline=new QTimeLine(3000);
timeline->setFrameRange(0, 100);
QGraphicsItemAnimation *animation=new QGraphicsItemAnimation;
animation->setItem(item);
animation->setTimeLine(timeline);
for (int i=0; i<100; i++) {
animation->setScaleAt(i/100.0, i/100.0, i/100.0);
}
connect(timeline, SIGNAL(valueChanged(qreal)), animation, SLOT(setStep(qreal)));
timeline->start();

我想要它做的就是在屏幕中间显示一个点,然后让它在 3 秒内扩展为一个圆圈。这段代码给我的是一个出现在左上角的点,然后增长并同时移动到中间。我试图通过在每一步设置位置来进行补偿,但这似乎很复杂。必须有一种更清洁的方法来做到这一点。

另外,原来的item在动画开始前会显示一瞬间,有什么办法可以默认隐藏,然后再显示动画?

提前致谢。

最佳答案

这是因为转换的原点在项目的左上角。您应该使用类似 addEllipse(-50, -50, 100, 100) 之类的方法,以便原点位于中心。当然,您需要将项目放置在有意义的地方。

关于Qt动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com