[英]Read property from QML singleton with C++
是否可以在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()
但是使用單例我無法看到如何訪問它。
雖然不是直接的 ,但訪問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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.