1.这个动态数据是从文件系统中的txt文件中先解析出来,在系统运行时,保存在应用程序中的容器里面;这个容器在装载的时候,把数据动态的跟QML中的代码关联起来;方便与用户的界面互动,用户使用界面控制命令的时候,能响应这些数据处理函数,并在处理函数完成响应的数据传输功能。
模拟测试:将动态载入的数据,用C++数据表示;
要修改的地方是:QML中的model-view,怎么用C++控制model的数据
实验:以music 中list导入到C++,用Q_PROPERTY的方法导入到QML中。
说明:
数据在dummydata中定义了modellist,并用title等标识了。在主页面中用index选择了那个list,并在changeTrack函数中调用检查list的数据,跟图像,用于在显示中使用;其中是用“全局变量”用途的property 自定义属性,用于传递数据;
怎么动态改变model中的listElement元素的数量?
答案:此外,我们还可以使用 Javascript 对 Model 进行 append(), insert(), move(), remove() 等动态操作,从而实现对 Model 数据的增加删除和修改。
源文档 <http://www.developer.nokia.com/Community/Wiki/QML中的Model_View——一个ListView实例>
当模型中数据改变时,即QStringList改变,不会自动同步到视图显示,需要我们再一次用 QDeclarativeContext::setContextProperty() ,重新设定模型。
voidQDeclarativeContext::setContextProperty( const QString &name,const QVariant & value )
使用这个函数,将list导入到qml中为model对象,
思路:在读取txt文件的时候,动态创建append数据到list,最后用setContextProperty函数通知更新qml中的model对象。
步骤:
①定义个类class 用来表示商品的类
②为这个类组成几个队列,这些队列是要插入显示到QML中的
③导出这些list 增加更新功能,当list被刷新的时候,要重新注册setContextProperty()
QStringList dataList;
dataList.append(“Item 1”);
dataList.append(“Item 2”);
dataList.append(“Item 3”);
dataList.append(“Item 4”);
QDeclarativeView view;
QDeclarativeContext *ctxt =view.rootContext();
ctxt->setContextProperty(“myModel”,QVariant::fromValue(dataList));
最后在QML文件中可以使用myModel这个对象model数据
一定要用QStringList的类吗?自定义的链表类呢?
目标:(分步)
①写一个list能够插入到QML中,不做任何操作
②在QML-UI中修改某一个变量,而使得C++中能够接受到相应的修改
③能够在C++动态增加appenddelete某个ListItem元素
④细化List的分类等等其他情况