获取当前上下文来设置对象列表模型



我想在此示例中创建一个对象列表模型:http://doc.qt.io/qt-5/qtquick-models-objectlistmodel-example.html

要在qml中使用它,我需要设置上下文属性

ctxt->setContextProperty("myModel", QVariant::fromValue(dataList));

在上面的示例中,这是在main.cpp中完成的,但是,我想在定义模型的类的构造函数中执行此操作。有没有办法在我的班级定义中获取上下文?如果没有,设置上下文的最佳实践是什么?

编辑:更多上下文:我正在做一个应该绘制一行的qquickitem。我想使用的模型保存tick的属性,即像素位置和字符串标签,因此不需要编辑,如果变焦更改,则所有值都需要更改。然后,我想使用listView和自定义委托绘制滴答。因此,理想情况下,我想在qquickitem内定义我的模型,然后在qml中创建。

有没有办法在我的班级定义中获取上下文?

将其作为构造函数参数进行操作;(

但是,我不建议将这种对象作为模型。这是快速而肮脏的,强调肮脏。当模型更改时,这是非常低效的,因为视图必须重新创建所有内容,而完整的模型只会反映实际的更改。

检查此实现。

编辑:澄清后,考虑以下文档:

某些C 序列类型在QML中透明地支持 JavaScript数组类型。

尤其是QML当前支持:

QList<int>
QList<qreal>
QList<bool>
QList<QString> and QStringList
QVector<QString>
std::vector<QString>
QList<QUrl>
QVector<QUrl>
std::vector<QUrl>
QVector<int>
QVector<qreal>
QVector<bool>
std::vector<int>
std::vector<qreal>
std::vector<bool>

所有这些都隐式转换为JS数组,您可以将JS数组直接用作模型数据。

最新更新