C++ 从c+;调用QML中的JS函数+;插件
假设我有一个简单的QML插件。定期检查对象的一些状态,在这个步骤中,我想从C++查询QML对象,这样: 插件代码(c++)C++ 从c+;调用QML中的JS函数+;插件,c++,plugins,qml,qquickitem,C++,Plugins,Qml,Qquickitem,假设我有一个简单的QML插件。定期检查对象的一些状态,在这个步骤中,我想从C++查询QML对象,这样: 插件代码(c++) 类MyItem:公共QQuickItem { 公众: MyItem(QQuickItem*父项=0): QQuickItem(父项) {} void timer函数(SomeObject*obj) { //这里我需要调用QML函数来验证我的对象,可能是这样的: callJSFunction(“myFunction”,obj);//这就是我需要的 如果(obj->批准)剂量测
类MyItem:公共QQuickItem
{
公众:
MyItem(QQuickItem*父项=0):
QQuickItem(父项)
{}
void timer函数(SomeObject*obj)
{
//这里我需要调用QML函数来验证我的对象,可能是这样的:
callJSFunction(“myFunction”,obj);//这就是我需要的
如果(obj->批准)剂量测量();
}
}
QML文件:
MyItem{
id:myItem
属性bool someProperty
函数myFunction(obj)
{
obj.approved=某个属性;
}
}
我不能使用信号,因为对JS的调用必须是同步的。我的意思是我需要的是:
- C++中的代码计时器调用函数TimeRealStices(),用对象来验证
- 在timerFunction()中,我调用JS函数并返回结果
- 之后,我继续执行timerFunction()
MyItem
发出一个信号并连接到QML中的该信号。
(唯一的例外是多线程代码,但我假设您的MyItem
实例与QML引擎位于同一线程中)
当然,你可以反过来做,从C++调用JS函数。我会反对这一点,因为它打破了分层——QML层应该访问C++层,而不是相反。
不管怎样,从C++调用JS函数,使用。有关详细信息,请参阅有关的文档。谢谢@tmcguire!我一直认为信号是异步的。如果我错了,那么我的问题就解决了。