Я предлагаю использовать следующие классы: QGraphicsScene
и QGraphicsView
для обработки и отображения графики, QGraphicsTextItem
для отображения каждого символа, QGraphicsItemAnimation
анимировать персонаж.
Я не знаю, как именно действует пример, который вы опубликовали, и какие преобразования применяются. Я написал простой пример. Здесь начальное вращение и перевод каждого элемента задаются случайным образом, а конечные позиции без какого-либо преобразования.
QString text = "test";
int current_width = 0;
QFont font("", 30);
QTimeLine *timeline = new QTimeLine(2000);
foreach(QChar c, text) {
QGraphicsTextItem* item = scene.addText(c);
item->setFont(font);
item->adjustSize();
item->setPos(current_width, 0);
current_width += item->textWidth();
QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
animation->setItem(item);
animation->setTimeLine(timeline);
animation->setRotationAt(0, 360.0 * rand()/RAND_MAX);
animation->setTranslationAt(0, 100 * rand()/RAND_MAX,
100 * rand()/RAND_MAX);
animation->setRotationAt(1, 0);
animation->setTranslationAt(1, 0, 0);
}
ui.graphicsView->setScene(&scene);
timeline->start();
я могу сделать анимацию, но в арабских и персидских текстов буквы separated.some программист предложил мне использовать глиф, но я не знаю, как я должен это сделать –