读书人

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

发布时间: 2013-09-14 13:03:22 作者: rapoo

请教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()
}

读书人网 >QT开发

热点推荐