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

news2025/1/11 4:13:47

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来提供数据,生成的效果如下,这是最原始的效果,看着很简陋,可以根据自己的需要修改:
在这里插入图片描述
这就是最简单的列表效果,如果需要使用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;
                }
            }
        }
    }

定义了每一行的背景,按下选中背景色改变,设置了每一行的边框,效果显示如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/981744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年智能家居占消费电子出货量28%,蓝牙Mesh照明占据重要位置

市场研究机构 TechInsights 的最新报告显示,预计 2023 年全球消费者在智能家居相关硬件、服务和安装费方面的支出将复苏,达到 1310 亿美元,比 2022 年增长 10%。TechInsights 表示,消费者在智能家居系统和服务上的支出将继续强劲增…

【UIPickerView案例05-省市选择界面数据展示 Objective-C语言】

一、省市选择界面数据展示 1.省市选择界面数据展示,就是这样的一个东西 我们接下来,看我们第二个案例,就是这个省市选择, 左边选择一个省,右边就把这个省所有的市展示出来 比如,我现在展示的是山东的城市, 我选择一个山西 第一步干嘛,是不是也是分析它的界面 1)上…

Android Automotive编译

系统准备 安装系统 准备一台安装Ubuntu系统的机器(windows系统的机器可以通过WSL安装ubuntu系统) 安装docker 本文使用docker进行编译,因此提前安装docker。参考网络链接安装docker并设置为不使用sudo进行docker操作。 参考链接&#xff…

B-Tree 索引和 Hash 索引的对比

分析&回答 B-Tree 索引的特点 B-tree 索引可以用于使用 , >, >, <, < 或者 BETWEEN 运算符的列比较。如果 LIKE 的参数是一个没有以通配符起始的常量字符串的话也可以使用这种索引。 有时&#xff0c;即使有索引可以使用&#xff0c;MySQL 也不使用任何索引。…

2023 最新 Git 分布式版本控制系统介绍和下载安装使用教程

Git 基本概述 Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或大或小的项目。 集中式和分布式的区别&#xff1f; 最常见的集中式版本控制系统是SVN&#xff0c;版本库是集中放在中央处理器中的&#xff0c;而干活的时候&#xff0c;用的都是自己电…

类和对象(Java)

目录 一、面向对象的初步认知1、什么是面向对象2、面向对象与面向过程 二、类和类的实例化1、什么是类2、类的实例化3、类和对象的说明 三、this引用1、为什么要有this引用2、什么是this引用3、this引用的特性 四、对象的构造及初始化1、如何初始化对象2、构造方法 五、封装1、…

React三属性之:props

作用 将父组件的参数传递给子组件 父组件 import ./App.css; import React from react; import PropsTest from ./pages/propsTest class App extends React.Component{render(){return(<div><h2>App组件</h2><PropsTest obj{{name:王惊涛,age:27}}>…

首发丨全球首款用于激光雷达的商用光控超表面芯片发布!激光雷达降本再添可选项

《激光雷达老炮儿》最新获悉,美国光学半导体创业公司Lumotive于上周五宣布正式对外推出其首款极具开创性、基于光控超表面 (LCM)技术的完整产品LM10,该产品也是世界上首款商用数字光束控制解决方案。 与机械系统相比,Lumotive的数字光束控制技术凭借其卓越的成本、尺寸和可…

基于Python机器学习、深度学习提升气象、海洋、水文应用教程

详情点击链接&#xff1a;基于Python机器学习、深度学习提升气象、海洋、水文应用教程 前沿 Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准…

vue 分页器组件+css动画效果

全网都找了一遍没有找到符合UI需求的分页动画&#xff0c;于是就主动上手了 需求&#xff1a; 1、分页最多显示9页&#xff0c;总页数最多显示无上限&#xff1b; 2、点击下一页的时候需要有动画效果过度&#xff0c;如果当前页数是当前显示最后的一页&#xff0c;则停了当前…

文件上传漏洞-upload靶场17-20关

文件上传漏洞-upload靶场17-20关 简介 经过了图片木马的的几个关卡&#xff0c;了解到如何使用图片写入代码的方式&#xff0c;去上传webshell。它们相较于修改后缀的方式&#xff0c;复杂度升级&#xff0c;需要去了解每一种图片类型的编码&#xff0c;可以在图片中去写入&a…

c++ noexcept

引入noexcept原因&#xff1a; 异常规范的检查是在运行期而不是编译期&#xff0c;因此程序员不能保证所有异常都得到了 catch 处理。由于第一点的存在&#xff0c;编译器需要生成额外的代码&#xff0c;在一定程度上妨碍了优化。模板函数中无法使用。赋值函数、拷贝构造函数和…

stable diffusion webui中的sampler

Stable Diffusion-采样器篇 - 知乎采样器&#xff1a;Stable Diffusion的webUI中&#xff0c;提供了大量的采样器供我们选择&#xff0c;例如Eular a&#xff0c; Heum&#xff0c;DDIM等&#xff0c;不同的采样器之间究竟有什么区别&#xff0c;在操作时又该如何进行选择&…

云备份——服务器业务处理模块以及网络通信模块

我们这里由于网络通信模块借助httplib库来完成&#xff0c;因此两个模块合并到一起完成&#xff0c;不熟悉httplib库的老铁可以再看看我之前的文章 云备份——第三方库使用介绍&#xff08;下&#xff09;_爱吃鱼的修猫的博客-CSDN博客 一&#xff0c;业务处理模块设计 我们这里…

移动安全:保护移动设备的 6 种方法

什么是移动安全&#xff1f; 移动安全是一个广泛的术语&#xff0c;涵盖用于保护移动设备上存储和传输的个人和商业信息的所有措施和技术。 移动安全可分为三个关键领域&#xff1a; 物理安全&#xff1a;保护设备本身免遭盗窃或损坏。 软件安全&#xff1a;通常通过使用…

【算法训练-链表 四】【删除】:删除链表的倒数第N个节点、删除有序链表中的重复元素、删除有序链表中的重复元素II

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【删除有序链表中的重复元素】&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c…

全国快递查询接口文档-v2,快递,全球快递,配送,物流管理,物流数据,电子商务

一、接口介绍 支持国内外1500快递物流公司的物流跟踪服务&#xff0c;包括顺丰、圆通、申通、中通、韵达等主流快递公司。同时&#xff0c;支持单号识别快递物流公司、按次与按单计费、物流轨迹返回等功能&#xff0c;以满足企业对快递物流查询多维度的需求。 二、使用案例截…

OJ练习第164题——具有所有最深节点的最小子树

具有所有最深节点的最小子树 力扣链接&#xff1a;865. 具有所有最深节点的最小子树 力扣链接&#xff1a;1123. 最深叶节点的最近公共祖先 题目描述 给定一个根为 root 的二叉树&#xff0c;每个节点的深度是 该节点到根的最短距离 。 返回包含原始树中所有 最深节点 的…

【网络安全】图解 Kerberos:身份认证

图解 Kerberos&#xff1a;身份认证 1.什么是 Kerberos &#xff1f;2.Kerberos 基本概念2.1 基本概念2.2 KDC 3.Kerberos 原理3.1 客户端与 Authentication Service3.2 客户端与 Ticket Granting Service3.3 客户端与 HTTP Service Kerberos 是一种身份认证协议&#xff0c;被…

【进阶篇】MySQL的MVCC实现机制详解

文章目录 0.前言1.基础介绍1.1. 什么是MVCC?1.1. 什么是当前读和快照读&#xff1f;1.1. 当前读&#xff0c;快照读和MVCC的关系1.1. MVCC能解决什么问题&#xff0c;好处是&#xff1f;1.1.1. 提高并发性能1.1.2. 避免死锁1.1.3. 解决脏读、不可重复读和幻读等问题1.1.4. 实现…