首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

请问c++写好的mode怎么动态的绑定到指定的Qml页的ListModel中

2013-09-14 
请教c++写好的mode如何动态的绑定到指定的Qml页的ListModel中QListQObject* dataList定义了一个model,

请教c++写好的mode如何动态的绑定到指定的Qml页的ListModel中
QList<QObject*> dataList;定义了一个model,内容是Name,value键值对的形式

BookFeeds.qml页有一个ListModel {id: bookFeeds}

在qt5.1.0中通过:
QQuickView view;
QQmlContext *ctxt = view.rootContext();
ctxt->setContextProperty("bookFeeds", QVariant::fromValue(dataList));
没能绑定成功,请教如何绑定?新手多谢指教。 c++ qt5
[解决办法]
我前几天也有一样的问题,后来看了这个有点启发,自带的实例,你试试,我也是新手
(QTDIR)\examples\declarative\modelviews\abstractitemmodel

[解决办法]

引用:
Quote: 引用:

1楼说的没错,参考那个例子也实现一个listmodel,然后在c++中把那个listmodel返回,qml直接用listview的model去等于那个函数的返回值

你好 
BookFeeds.qml页有一个ListModel {id: bookFeeds 
                                model: myModel}
我现在在main.cpp已经获取到一个dataList了,该怎么绑定呢?我上边的那种写法没起作用


首先你要有个一类用于保存你获得的那个dataList,然后在这个类里写一个函数把dataList作为返回值返回,如getDataList,这个函数在定义的时候要加Q_INVOKABLE宏,这样才能保证在qml中会调到这个函数。dataList的具体写法可以参考abstractitemmodel的例子
接下来在c++注册保存list的那个类,就像你上面写的,一样。
如:DataBaseManager* database = new DataBaseManager();
    QQuickView view;
    QQmlContext *ctxt = view.rootContext();
    ctxt->setContextProperty("dbmanager", QVariant::fromValue(database));

最后在qml里的,绑定list,这样你每次操作dataList界面就会同时同步了
ListView
{
id:list
model:dbmanager.getDataList()
}

热点排行