我想知道是否有任何宏或方式如何将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属性.
(我知道有QQmlListProperty但QQmlListProperty不支持部分刷新.总是需要重建所有Qml对象)