使用 createComponent 动态创建 QML 对象
Using createComponent to dynamically create QML objects
在我的C++程序中,我希望能够在运行时加载一个文件,其中包含多个员工的数据(名字,姓氏,DOB)。应该解释此文件并为每个员工创建 Employee 对象,并将其存储在某种列表中(也许是 QList?
在QML方面,我有一个"employee.qml"文件,它本质上是一个矩形,里面有几个文本字段。
创建我的 employee 对象时,我还想创建我的 'employee.qml' 组件的实例,并将每个实例绑定到其各自的 Employee 对象,以便文本字段反映C++对象中的数据。
实际上,对于每个 Employee 对象,应在屏幕上放置一个新组件,并将其绑定到正确的对象。它还应该能够调用类中定义的公共插槽方法。
Qt和QML甚至可能做到这一点吗?
编辑:
一个可能的想法可能是在C++中使用QQmlComponent::create(),使用SetProperty()将id设置为C++对象的名称,并使用setContextProperty使对象可用于QML。
实现此目的的一种简单方法是子类化QAbstractListModel
创建自己的EmployesListModel
,解析您的csv文件等,并将其公开给QML,您可以在其中使用Repeater
。最终的 QML 代码应如下所示:
EmployeesListModel
{
id: employeesListModel
source: "/path/to/employees.csv"
}
Repeater
{
model: employeesListModel
delegate: Text { text: "Hi, my name is %1 and i am %2 years old".arg(employeeName).arg(employeeAge) }
}
相关文章:
- QML 对象的销毁顺序
- 使用 createComponent 动态创建 QML 对象
- 可以在 QObject::connect() C++中连接 QML 对象现有信号?
- 如何删除 QML 对象
- 销毁 qml 对象后的信号槽连接
- 将 QObject 指针从 QML 对象传递到C++
- 使用C 访问QT / QML对象
- 如何使用 API 获取 QML 对象的 id 属性C++
- 如何在C++运行时更改QML对象的属性
- 与C++代码中的 qml 对象交互
- 如何从C++访问嵌套的 QML 对象
- 使用cpp代码从加载的qml访问qml对象
- 从C++访问 QML 对象
- 如何从C++调用 QML 对象的方法
- 从具有指定属性的C++创建 QML 对象
- 在现有 C++ QT 项目中实例化 QML 对象
- QML 对象属性的部分序列化
- 区分C++中QML对象的类类型
- 使用c++设置qml对象的属性
- 将qml对象添加到QGraphicsScene