我们可以通过利用Ubuntu.Components.ListItems 中的Expandable来创建一个可以扩展的List列表.在有些列表应用中这个是非常有用的.它可以让我们展示更多的内容.在先前的例程"如何在QML中设计一个expandable ListView"中,我有一个类似的设计.开发者也可以参阅那个例程来做自己的设计.

我们还是来看一个简单的例程:

Main.qml

import QtQuick 2.4
import Ubuntu.Components 1.3
import Ubuntu.Components.ListItems 1.3 as ListItem/*!\brief MainView with a Label and Button elements.
*/MainView {// objectName for functional testing purposes (autopilot-qt5)objectName: "mainView"// Note! applicationName needs to match the "name" field of the click manifestapplicationName: "expandablescolumn.liu-xiao-guo"width: units.gu(60)height: units.gu(85)Page {title: i18n.tr("expandablescolumn")ListModel {id: mymodelListElement { name: "image1.jpg" }ListElement { name: "image2.jpg" }ListElement { name: "image3.jpg" }ListElement { name: "image4.jpg" }ListElement { name: "image5.jpg" }ListElement { name: "image6.jpg" }ListElement { name: "image7.jpg" }ListElement { name: "image8.jpg" }ListElement { name: "image9.jpg" }ListElement { name: "image10.jpg" }ListElement { name: "image11.jpg" }}ListItem.ExpandablesColumn {anchors.fill: parentRepeater {model: mymodelListItem.Expandable {id: expexpandedHeight: units.gu(30)collapsedHeight: units.gu(12)Image {height: exp.heightwidth: heightsource: "images/" + name}Label {anchors.horizontalCenter: parent.horizontalCentertext: index}onClicked: {expanded = true;}}}}}
}

在这里,我们使用了一个而 ExpandablesColumn来设计我们的一个类似ListView的列表.在我们的设计中,我们也可以采用 UbuntuListView来完成我们的设计.具体代码可以参阅UbuntuListView中的设计.

如上面的ListItem.Expandable显示的那样,我们可以把它看成一个容器.在它里面我们可以画我们任何喜欢的界面.当点击的时候,我们可以通过如下的方法:
                    onClicked: {expanded = true;}

把该项打开,当然,我们也可以参考在UbuntuListView中的设计:

        delegate: ListItem.Expandable {id: expandingItemexpandedHeight: units.gu(30)onClicked: {ubuntuListView.expandedIndex = index;}}

在上面的设计中,我们把UbuntuListView中的expandedIndex设为当前的index从而达到expand当前项的目的.

运行我们的例程:
    
当我们打开我们的列表中的项的时候,该项被自动expand.当然我们也可以加入一些自己喜欢的动画效果.点击任何其它的区域将使得该项又回到以前的位置.
整个项目的源码在: https://github.com/liu-xiao-guo/expandablescolumn

利用Expandable创建一个可以扩展的列表相关推荐

  1. python怎么创建列表_用Python将一个列表分割成小列表的实例讲解 Python 如何创建一个带小数的列表...

    python里有一个列表,列表里有几个小列表,小列表#冒泡排序:scoreList = [['a',98],['c',45],['b',70],['d',85],['h',85],['f',92],[ ...

  2. Linux Namespace系列(09):利用Namespace创建一个简单可用的容器

    本文将演示如何利用namespace创建一个完整的容器,并在里面运行busybox.如果对namespace不是很熟悉,请先参考前面几遍介绍不同类型namespace的文章. busybox是一个Li ...

  3. 利用thinkphp创建一个简单的站点

    本文我们将利用thinkphp创建一个简单的站点,这里所使用的thinkphp版本是5.0.24,这里是它的中文文档.如果有需要可以参考它的中文文档. thinkphp框架是一个典型的MVC框架,该框 ...

  4. 利用GLFW创建一个窗口

    利用GLFW创建一个窗口 创建窗口前的准备工作 GLFW初始化 设置界面属性 界面相关属性 缓冲区相关属性 上下文相关属性 各个属性的默认值和取值范围 创建窗口 显示窗口 完整代码 窗口事件交互 完整 ...

  5. 利用记事本创建一个ASP.NET Core RC2 MVC应用

    步骤一.安装最新的.NET Core SDK 我们可以根据自身的操作系统环境从https://github.com/dotnet/cli上下载.NET Core最新的SDK,这个SDK包含.NET C ...

  6. java 广告插件_徒手创建一个chrome扩展-屏蔽广告插件

    创建一个文件夹,创建以下文件 maniftest.json  background.js和 icon图片 maniftest.json文件设置如下 { "name": " ...

  7. 利用idea创建一个基本的smm项目(带增删改查)

    环境  idea  jdk1.8  tomcat  mysql 打开idea选择创建一个maven项目 然后点击next,next,finsh 然后看项目的结构 如图所示 接着创建com包,再在com ...

  8. firefox附加组件开发者指南(五)——创建一个firefox扩展(上)

    本章篇幅较长,分上下两部分发布,本章中的图和清单4在原网站中没有,因此这里也没有,感兴趣的可以去原文补充.下面是译文. 至今为止,各个章节中独立的介绍了相关的技术--XUL.javascript.CS ...

  9. 如何利用MYSQL创建一个表格

    1.打开MYSQL,如下. 2.首先必须在一个数据库里面工作,所以你必须创建一个数据库.利用create database +(数据库名称),来出创建数据库. 3.创建好了必须使用它,利用 use + ...

最新文章

  1. PHP获取今天,昨天,本月,上个月,本年 起始时间戳
  2. linux中html图标格式,如何在Linux上将HTML页面转化成png图片
  3. ssh 信息泄露 1 处,服务存在被爆破风险如何处理
  4. 关于Android构建
  5. c#图片上绘制半透明矩形
  6. oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...
  7. 只要300页!火遍全网的NET6+linux知识手册!拿走不谢!
  8. ps命令与top命令参数意义详解
  9. 在已经排好序的线性表中插入一个数,还是升序
  10. C#将另一个应用程序的窗口移动到前端的问题
  11. 【译】Spring 4.0带来的@Conditional注解
  12. MM物料移动BW数据源介绍
  13. 从 BM 到 RBM
  14. 发生服务器错误 显示预览,我的电脑为何在做asp的时候按F12键不能预览!预览就出错!错误代码500说服务器或者DNS错误...
  15. verilog语法学习心得
  16. 手机 putty linux,putty下载-putty 安卓版v4.04-PC6安卓网
  17. 中小企业财务管理的重要性
  18. sql2000 sp3、sql2000 sp4升级补丁下载和安装须知:
  19. 南大计算机软件所,2020考研南京大学计算机软件研究所推免夏令营通知_南大软件所20推免_聚创南大考研网...
  20. 精心整理的ebay大数据面试题(全)

热门文章

  1. 数据结构——树的一些基本概念
  2. spark统计文件行数
  3. 如何在计算机课堂中培养核心素养,例谈核心素养培养在初中信息技术教学中的落实...
  4. 强网杯 2019-随便注 (堆叠注入)
  5. alooa是华为什么型号_alooa是华为什么型号_pot alooa是华为什么型号 pot alooa是华为麦芒8(图文)...
  6. 笔记:MATLAB自定义渐变背景
  7. extremedb--calc
  8. textview点击事件 android,Android给TextView添加点击事件的实现方法
  9. 基于Java毕业设计在线图书超市源码+系统+mysql+lw文档+部署软件
  10. 岗位说明书、职位说明书大全