分享几种简约大方的ListView外观设计(qml)

2024-03-07 18:36

本文主要是介绍分享几种简约大方的ListView外观设计(qml),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

最近才学到这里,感觉基础的 ListView 很丑,就现学现用弄个几个自认为还行的设计给大家献丑了。如果你觉得还不错,代码就在下面拿去直接用,顺便给我点个赞哈 ~ 感谢感谢 ~

二、正文

设计1

第一种就是正常的左侧边栏,特别之处就是高亮项用了4个小三角。这小三角并不是图片,而是高亮的圆角和矩形项重叠得到的,有点老古董游戏里的菜单项选择时的感觉。

代码是单独新建的一个qml文件里写的,如果写到主文件里会很长,建议分文件去写界面。

具体代码:

import QtQuick
import QtQuick.ControlsRectangle{width: 100; height: parent.heightcolor: 'grey'ListView{id: listwidth: 90; height: parent.heightx: 10; y:10spacing: 10clip: truemodel: ['首页', '销售数据', '库存数据', '发货计划', '广告', '设置', '用户权限']delegate: Rectangle{width: 80; height: 30color: 'grey'radius: 10Text{id: itemTextanchors.centerIn: parentcolor: 'white'text: modelData}MouseArea{anchors.fill: parentonClicked: {list.currentIndex = index}}}highlight: Rectangle{color: "transparent"border.width: 2border.color: 'white'}highlightMoveDuration: 0}
}

设计2

第二种也是高亮和项的背景堆叠出来的小三角,这里换成了黄色。和上面不同地方是这个是一个横向的菜单栏。

做这个横向的菜单栏的原因是,我准备做一个小程序,但是功能不太多,我想着设计成横向的会更美观一些。

qml里的 ListView 是自带一些项之间切换的动画的,gif图片我还不会弄,所以,大家有兴趣的话复制下面的代码自己去试试就知道了,总之,还是挺不错的。

具体代码:

 

import QtQuick
import QtQuick.ControlsRectangle{width: parent.width; height: 38color: 'black'ListView{id: listx: 10anchors.verticalCenter: parent.verticalCenterwidth: parent.width; height: 30model: ['主页', '工具箱', '店铺', '业绩报表', '广告', '库存', '财务报表', '产品表现', '设置']clip: truedelegate: Rectangle{width: 60; height: 30color: 'black'radius: 10Text{text: modelDatacolor: "white"anchors.centerIn: parent}MouseArea{anchors.fill: parentonClicked: {list.currentIndex = index //可以实现高亮切换}}}spacing: 10highlight: Rectangle{color: "transparent"border.width: 3border.color: "yellow"}highlightMoveDuration: 0orientation: ListView.Horizontal //让 ListView 横向显示}
}

设计3

这个也比较简单,高亮用白色,字被点击后从灰色切换成黑色,和白色形成鲜明对比,看起来还是挺醒目的,也比较简约美观,但是总感觉不太满意,所以就有了下面的第4种设计。

设计3主要是增加了当前项的字体颜色切换,其它和上面的并无太大差异。重点代码是下面这句,ListView.isCurrentItem + 三目运算符。

color: reccc.ListView.isCurrentItem ? "black" : "grey"

具体代码:

import QtQuick
import QtQuick.ControlsRectangle{id: recwidth: parent.width; height: 38color: 'lightgrey'ListView{id: listx: 10anchors.verticalCenter: parent.verticalCenterwidth: parent.width; height: 30model: ['常用单位换算', '英文大小写转换', '文本处理工具']clip: truedelegate: Rectangle{id: recccwidth: 100; height: 30color: 'transparent'Text{id: modelDataTexttext: modelDatacolor: reccc.ListView.isCurrentItem ? "black" : "grey"anchors.centerIn: parent}MouseArea{anchors.fill: parentonClicked: {list.currentIndex = index //可以实现高亮切换}}}spacing: 10highlight: Rectangle{color: "white"width: 100; height: 30radius: 15}highlightMoveDuration: 200orientation: ListView.Horizontal //让 ListView 横向显示}
}

设计4

第4种就是下面这样的啦,已经是我目前最高水平发挥了,哇咔咔 ~

我把 ListView 没有锚定在 Rectangle 上,而是 y坐标往下偏移了14,再把高亮背景色设置成白色,这样看起来就好像是一个 Tab标签页,和下面的内容形成一个整体,我个人感觉还不赖。

在我这个程序投入使用之前,如果还没想到更好的设计的话,就暂时先用这个吧!

具体代码:

import QtQuick
import QtQuick.ControlsRectangle{id: recwidth: parent.width; height: 38color: '#002f36'ListView{id: listx: 10; y: rec.y +14width: parent.width; height: 30model: ['常用单位换算', '英文大小写转换', '文本批量处理', '文件管理器']clip: truedelegate: Rectangle{id: recccwidth: 100; height: 30color: 'transparent'Text{id: modelDataTexttext: modelDatacolor: reccc.ListView.isCurrentItem ? "#002f36" : "#ffffff"anchors.centerIn: parent}MouseArea{anchors.fill: parentonClicked: {list.currentIndex = index //可以实现高亮切换}}}spacing: 10highlight: Rectangle{color: "white"radius: 5}highlightMoveDuration: 200orientation: ListView.Horizontal //让 ListView 横向显示}
}

三、写在最后

都看到这里了,就顺手点个赞吧 ~

我后面会持续稳定分享qml方面的知识和小技巧,如果你也和我一样对qml有兴趣,不妨再关注一下我,嘿嘿 ~

这篇关于分享几种简约大方的ListView外观设计(qml)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784447

相关文章

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

Java中InputStream重复使用问题的几种解决方案

《Java中InputStream重复使用问题的几种解决方案》在Java开发中,InputStream是用于读取字节流的类,在许多场景下,我们可能需要重复读取InputStream中的数据,这篇文章主... 目录前言1. 使用mark()和reset()方法(适用于支持标记的流)2. 将流内容缓存到字节数组

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文