相关疑难解决方法(0)

如何创建用于QML的通用对象模型?

我想知道是否有任何宏或方式如何将Qt模型注册为QObject的属性.

例如,我有AnimalModel(http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel).

我知道我可以将它传递给QuickView的根上下文

QuickView view;
view.rootContext()->setContextProperty("myModel", &model);
Run Code Online (Sandbox Code Playgroud)

如果我通过Qml宏注册了QObject,我也可以传递这个对象来查看:

view.rootContext()->setContextProperty("obj", pDataObject);
Run Code Online (Sandbox Code Playgroud)

但是如果我想拥有保存任何数据模型的QObject呢?

例如:

class DataObject : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
    Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
    ...

    AnimalModel m_modelAnimals;

    //Is this possible in any way?
    //Q_PROPERTY(AnimalModel modelAnimals READ modelAnimals NOTIFY modelAnimalsChanged)
};
Run Code Online (Sandbox Code Playgroud)

我发现的每个例子都显示了如何传递QAbstractListModel给根上下文.但是没有人如何将它用作QObject属性.

(我知道有QQmlListPropertyQQmlListProperty不支持部分刷新.总是需要重建所有Qml对象)

c++ generics qt model qtquick2

7
推荐指数
1
解决办法
3228
查看次数

标签 统计

c++ ×1

generics ×1

model ×1

qt ×1

qtquick2 ×1