我想将一些参数从C ++传递给QML,以便QML可以对它们做些什么。
有点像这样:
void MyClass::myCplusplusFunction(int i, int j)
{
emit mySignal(i, j);
}
在QML中,每次发出mySignal(i, j)
时,我都想调用QML函数并使用i
和j
执行操作。
Connections {
target: myClass
// mySignal(i, j) is emitted, call myQmlFunction(i,j)
}
我将如何做到这一点?
答案 0 :(得分:1)
您可以在此处找到整个文档:
答案 1 :(得分:1)
让我们说你在cpp方面有一个信号:
void yourSignal(int i, QString t)
您有两种选择:
将您的类注册为qml类型并将其用作qml对象。该对象将从QML侧初始化。 reference:
qmlRegisterType<ClassNameCPP>("com.mycompany.qmlName", 1, 0, "ClassNameQml");
然后,在qml中:
import QtQuick 2.9
import com.mycompany.qmlName 1.0
Item{
ClassNameQml{
id: myQmlClass
onYourSignal: {
console.log(i,t); // Do whatever in qml side
}
}
}
将您的类添加为qml变量。当您需要多次重复使用对象时,首选此选项。 reference:
view.rootContext()->setContextProperty("varName", &cppObject);
然后,在qml中:
import QtQuick 2.9
Item{
Connections{
target: varName
// In QML for each signal you have a handler in the form "onSignalName"
onYourSignal:{
// the arguments passed are implicitly available, named as defined in the signal
// If you don't know the names, you can access them with "arguments[index]"
console.log(i,t); // Do whatever in qml side
}
}
}