用c++从QML单例中读取属性
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
}
主要。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
相关文章:
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组
- 从C++代码中直接读取成员属性
- C 从文件中读取对象具有数组属性
- 从C 读取QML数组属性
- 如何从C 中的HDF5文件中读取属性名称和数据集名称,在这里我不知道HDF5文件中存在什么属性
- 我如何使用GO语言读取可能是两种不同数据类型之一的HDF5属性
- 如何从提升属性树中读取字段类型
- 声明仅在C 中使用读取属性的接口
- MFC SDI在更改属性时从INI读取并更新视图字符串
- 组合框初始化错误:无法读取未定义的属性'constructor'
- 运行时未读取log4cplus属性文件更改
- Boost属性树Json读取包含LPWSTR的文件
- 我正在尝试通过 Boost 图形库从 Graphviz DOT 文件中读取图形.如何读取存储在数组中的未知数量的属性
- 如何从 TMXObjectGroup 读取对象定制属性
- 使用派生类"istream"读取基类的属性
- 读取配置属性的简单方法
- 通过boost::read_graphviz()读取boost动态属性时发生异常
- 在c++中使用xerces读取属性名
- 用c++从QML单例中读取属性
- HDF5 C++读取属性的内容