【QML】使用 QtQuick2的ListView创建一个列表(一)

这篇具有很好参考价值的文章主要介绍了【QML】使用 QtQuick2的ListView创建一个列表(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

qtquick2版本和qtquick1版本分别提供了一个ListView组件供使用,两个组件在使用上和属性的提供上还是有比较大的差异的,因为qtquick2是新的,所以就以改版本为基础学习如何使用;
首先,要知道ListView提供了那些属性提供修改,那些是只读,各个属性的类型是啥,这些可用在QT的帮助文档和开发过程中使用F1键来使用帮助文档查看,都是很方便的,还有用例;
先使用ListView来创建一个最简单的例子,所有的都在qml里来实现:

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property var modelVar: [1,2,3,4,5];

    ListView {
        id:listView;
        anchors.fill: parent;
        model: modelVar;

        delegate: Text{
            height:30;
            text: modelData;
        }
    }
}

这里的数据直接使用的是一个数组来提供的,也可以采用ListModel来提供数据,生成的效果如下,这是最原始的效果,看着很简陋,可以根据自己的需要修改:
【QML】使用 QtQuick2的ListView创建一个列表(一),QML那些事儿,qt,开发语言
这就是最简单的列表效果,如果需要使用Listmodel来提供数据,可以做如下修改:

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property var modelVar: [1,2,3,4,5];

    ListModel {
        id:listModel;
        ListElement {
            number:1;
        }
        ListElement {
            number:2;
        }
        ListElement {
            number:3;
        }
        ListElement {
            number:4;
        }
        ListElement {
            number:5;
        }
    }

    ListView {
        id:listView;
        anchors.fill: parent;
        model: listModel; //使用ListModel做数据模型

        delegate: Text{
            height:30;
            text: number; //更改为listmodel里自定义的角色名
        }
    }
}

效果还是和上面一样,因为并没有对委托delegate做修改,修改组件的显示效果也主要是对委托做修改,delegate这个属性代表ListView每一行的显示风格,可以通过自定义各种委托组件来实现各种样式的列表的效果。

在QML中,当我们使用ListView、GridView或Repeater等控件进行数据展示时,通常需要一个delegate用于渲染和布局每个数据项的视图。而这个delegate就是使用QML语言编写的组件,它可以包含其他QML组件、JavaScript代码和属性绑定等,从而实现动态渲染和交互。

自定义一个组件来作为一个委托,使用Component来创建一个代表每一行显示的视图,如下:

Component {
        id:delegateComponent;
        Rectangle {
            id:rect;
            width:parent.width;
            height:40;
            color: listView.selectIndex == index ? "lightblue" : "grey";
            radius: 5;
            border.width: 1;
            border.color: "white";
            Text {
                anchors.centerIn: parent;
                text: number;
                font.pixelSize: 30;
            }

            MouseArea {
                anchors.fill: parent;
                onClicked: {
                    listView.selectIndex = index;
                }
            }
        }
    }

定义了每一行的背景,按下选中背景色改变,设置了每一行的边框,效果显示如下:
【QML】使用 QtQuick2的ListView创建一个列表(一),QML那些事儿,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-696915.html

到了这里,关于【QML】使用 QtQuick2的ListView创建一个列表(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt中如何在qml文件中使用其他的qml文件并创建对象

    如果想使用其他的qml文件直接创建对象,必须先这样导入其qml文件并as成别名,才可以创建对象并使用它。 一、导入qml文件,例如: 二、使用别名创建对象 三、使用创建的对象 秋风写于淄博,业务交流与技术咨询:Q375172665

    2024年02月12日
    浏览(38)
  • 25. 【Android教程】列表控件 ListView

    在学习了 ScrollView 及 Adapter 两节内容之后,大家应该对 ListView 有了一些基本的了解,它是一个列表样式的 ViewGroup,将若干 item 按行排列。ListView 是一个很基本的控件也是 Android 中最重要的控件之一。它可以帮助我们完成多个 View 的垂直排列并支持滚动显示效果,而它比 Scr

    2024年04月17日
    浏览(32)
  • Flutter第六弹 基础列表ListView

    目标: 1)Flutter有哪些常用的列表组建 2)怎么定制列表项Item? 使用标准的 ListView 构造方法非常适合只有少量数据的列表。我们还将使用内置的 ListTile widget 来给我们的条目提供可视化结构。ListView支持横向列表和纵向列表。 ListTile相当于列表项 Item,可以定制列表项内容。

    2024年04月14日
    浏览(31)
  • Android Studio 中列表视图(ListView)的应用

    目录 引言 一、列表视图的作用 二、列表视图的工作原理和工作方式 三、准备数据源 四、适配器的使用 五、布局文件中的列表视图 六、自定义列表项布局 七、列表项点击事件处理 八、列表的优化 十、示例代码和演示 十一、总结和展望 参考资料:         欢迎来到本

    2024年02月08日
    浏览(29)
  • Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)

    需要图片集或全部源码请点赞关注收藏后评论区留言~~ 如果想在页面上直接显示全部列表信息,就要引入新的列表视图ListView,列表视图允许在页面上分行展示相似的数据列表。 列表视图新增的属性与方法如下 divider 指定分割线的图形 dividerHeight 指定分割线的高度 listSelecto

    2023年04月22日
    浏览(34)
  • 使用qtquick调用python程序,pytorch

    使用qtquick调用python程序 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch() 2.4QT 5.14.1 新版QT6.4,,6.5在线安装经常失败,而5.9版本又无法编译64位程序,所以就采用5.14.1这个用的比较多也比较稳定的一个版本。 QT编译器采用的是MSVC2017 64bit。 链接:https://pan.baidu.com/s/1ER98DPA

    2024年02月02日
    浏览(47)
  • Android 使用 RecyclerView 创建动态列表

    记录一下学习过程,RecyclerView 创建动态列表效果如下: Recyclerview 认识 Recyclerview 库: Recyclerview 指南: RecyclerView 可以显示大型数据集,通过回收有限数量的视图可以有效地滚动这些数据集,同时最大限度减少内存用量。 在实例化 ViewHolder 视图时可以定义单击侦听器。 Recy

    2023年04月27日
    浏览(36)
  • Python-使用xlsxwriter创建单元格下拉列表(数据校验)

    在一个B/S系统中,用户经常需要从以Excel的方式填写后导入,此时网页上需要提供Excel填写的模板,将所需填写的字段以及所处的列的位置固定下来。其中,避免用户随意填写导致系统后台校验出错,对于某些字段,系统需要预设好固定的选项值,用户只能在给定的范围内选择

    2024年02月10日
    浏览(29)
  • HarmonyOS应用开发学习笔记 UI布局学习 List(){}创建列表 列表形式显示 简单使用

    List 创建列表 列表形式显示 官方文档:创建列表(List) 关键代码 List(){} 列表控件 ListItem() {} 子元素 例如 关键代码:listDirection(Axis.Horizontal) 默认竖直方向 Axis.Vertical 分隔线的宽度会使ListItem之间存在一定间隔,当List设置的内容间距小于分隔线宽度时,ListItem之间的间隔会使用

    2024年02月02日
    浏览(36)
  • 创建一个Python脚本,实现以下功能。(1)定义一个列表1ist1=[1,2,4,6,7,8],将其转化为数组N1。(2)定义一个元组tup1=(1,2,3,4,5,6),将其转化为数组N2。

    1.创建一个Python脚本,实现以下功能。 (1)定义一个列表1ist1=[1,2,4,6,7,8],将其转化为数组N1。 (2)定义一个元组tup1=(1,2,3,4,5,6),将其转化为数组N2。 (3)利用内置函数,定义一个1行6列元素全为1的数组N3。 (4)将N1、N2、N3垂直连接,形成一个3行6列的二维数组N4。 (5)将N4保存为Python二进制

    2023年04月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包