簡體   English   中英

使用C ++從QML singleton讀取屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM