【发布时间】:2019-03-22 00:59:10
【问题描述】:
我正在为 QGraphicsTextItem 设置动画,我在其周围添加了一个框架。在动画期间,文本似乎在框架内轻微晃动,这很烦人。
示例代码:
class MovingFrameText : public QGraphicsTextItem
{
Q_OBJECT;
public:
MovingFrameText( ) : QGraphicsTextItem(0)
{
setPlainText ( "human ");
QFont f = font();
f.setPixelSize(40);
setFont(f);
setFlags(QGraphicsItem::ItemIsMovable);
}
QRectF boundingRect() const
{
return QGraphicsTextItem::boundingRect().adjusted(-2,-2,+2,+2);
}
void paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget)
{
QGraphicsTextItem::paint(painter,option,widget);
painter->setPen(Qt::black);
painter->drawRect(boundingRect());
}
};
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
MovingFrameText t;
t.setPos(640,680);
QGraphicsScene scene;
scene.addItem(&t);
QGraphicsView view(&scene);
view.resize(640, 680);
view.show();
auto moveAnimation = new QPropertyAnimation( &t, "pos" );
moveAnimation->setDuration( 10000 );
moveAnimation->setStartValue( QPointF(640, 680) );
moveAnimation->setEndValue( QPointF(0, 0) );
moveAnimation->setEasingCurve( QEasingCurve::Linear );
moveAnimation->start(QAbstractAnimation::DeleteWhenStopped);
return app.exec();
}
有什么办法可以平滑动画吗?
【问题讨论】:
-
顺便说一句,你为什么要定义一个新的
pos属性。QGraphicsTextItem已经有一个从QGraphicsObject继承的pos属性。 -
它只是我做的另一个测试代码的剩余部分。我将它编辑出来,但它不会改变结果,文本在框中晃动。
标签: c++ qt qt5 qgraphicstextitem qpropertyanimation