是否可以在C ++代码中访问/读取QML单例的属性?
例如,如果我的QML单例看起来像这样:
pragma Singleton
import QtQuick 2.5
QtObject {
property int myProperty: 5
}
如何从C ++代码访问myProperty。我需要这个,因为我不想在QML和C ++中都有我的“神奇”数字,而且在C ++中很少需要它。
对于普通的QQuickItem来说,它总是很容易。只需访问QuickItem(通过动态创建或使用findChild()),然后调用quickItem->property("myProperty").toInt()
但是对于单身人士,我无法看到如何访问它。
答案 0 :(得分:0)
虽然不是直接,但访问QML单例的一种方法是通过非单例QML对象中的函数,您可以通过以下方式访问:
<强> Constants.qml 强>
pragma Singleton
import QtQuick 2.5
QtObject {
objectName: "Constants"
property double phi: 1.6180339887498948482
}
main.qml(例如)
import QtQuick 2.5
import "."
function getPhi()
{
return Constants.phi;
}
<强> C ++ 强>
//...
// Create the engine and load QML
//...
QObject* rootObject = engine->rootObjects().constFirst();
QVariant phi;
QMetaObject::invokeMethod(rootObject, "getPhi", Q_RETURN_ARG(QVariant, phi));
qDebug() << phi.toFloat();
不要忘记你需要一个qmldir文件来访问QML中的单身人士:
<强> qmldir 强>
singleton Constants Constants.qml