从另一个qml文件中读取数据并显示在ListView中

http://blog.csdn.net/csfreebird/article/details/18077839


从下面的文档,你可以看到一些代码片段演示了如何创建一个简单的ListView.

http://doc-snapshot.qt-project.org/qdoc/qml-qtquick-listview.html#model-prop

我把这些组装起来,放在一个演示程序中。在我的项目中,目录结构如下:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. listview1$ tree  
  2. .  
  3. ├── imports  
  4. │   └── model  
  5. │       ├── ContactModel.qml  
  6. │       └── qmldir  
  7. ├── run.sh  
  8. └── test.qml  

这个演示程序包含了一个test.qml文件和另一个plugin. 这个plugin只包含了一个ContactModel.qml文件,没有C++动态库。

qmldir描述了从这个plugin暴露出来的module.

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. module model  
  2. ContactModel 1.0 ContactModel.qml  


这个ContactModel.qml文件是一个用于给ListView提供数据的model.

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. import QtQuick 2.0  
  2. ListModel {  
  3.     ListElement {  
  4.         name: "Bill Smith"  
  5.         number: "555 3264"  
  6.     }  
  7.     ListElement {  
  8.         name: "John Brown"  
  9.         number: "555 8426"  
  10.     }  
  11.     ListElement {  
  12.         name: "Sam Wise"  
  13.         number: "555 0473"  
  14.     }  
  15. }  

在test.qml文件中,将ContactModel应用到model属性上。delegate是用于遍历model中所有ListElements的方法,并且将每个ListElement作为一个Text 块显示在窗口。

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. import QtQuick 2.0  
  2. import model 1.0  
  3. ListView {  
  4.     width: 180; height: 200  
  5.     model: ContactModel {}  
  6.     delegate: Text {  
  7.         text: name + ": " + number  
  8.     }  
  9. }  

要编译这个程序,运行下面的命令:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. qmake  
  2. make  

要运行的话:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. ~/Qt5.2.0/5.2.0/gcc_64/bin/qmlscene -I ./imports ./test.qml  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值