如何从C++启动 QML 动画

How to fire off QML-animation from C++

本文关键字:QML 动画 启动 C++      更新时间:2023-10-16

我通过中介类连接了C++和QML,并使所有内容在两个方向上工作,但这让我感到困惑。

这就是我连接调解器类的方式:

// Initialize Mediator between QML and C++
QmlCppMediator m_qmlCppMediator;
QDeclarativeContext *context = viewer.rootContext();
context->setContextProperty("cppInterface", &m_qmlCppMediator);

如何从C++内部触发普通的属性动画?

好的,

我已经可以自己回答这个问题了。

我选择了这里描述的方法 http://qt-project.org/doc/qt-4.8/qdeclarativeanimation.html

我将尝试动画化的对象的"状态"绑定到C++接口中的Q_PROPERTY。不同的状态链接到过渡(在QML中),这些过渡对对象进行动画处理。

一种简单的方法是在QML文件本身中定义一个JavaScript函数,如下所示:

function startAnimation() {
 animationID.running = true;
}

现在从C++调用此代码,简单!