qml 下拉框图片的代码,不是ComBox

news/2024/5/19 18:54:54
// 导入 QtQuick 2.2 模块
import QtQuick 2.2// 定义一个 Rectangle 组件,作为下拉菜单的容器
Rectangle {id: dropdown // 下拉菜单的 IDx: 0 // x 坐标y: 0 // y 坐标z: 0 // z 坐标width: 458 // 宽度height: 60 // 高度radius: 8 // 圆角半径color: "transparent" // 背景颜色border.color: "#DDDDDD" // 边框颜色border.width: 1 // 边框宽度// 定义两个属性:当前选中的索引和图片资源数组property int currentIndex: 1property var imageSources: []// 显示当前选中的图片Image {id: dropdownImagesource: dropdown.imageSources[dropdown.currentIndex] // 图片资源anchors.horizontalCenter: dropdown.horizontalCenter // 水平居中anchors.verticalCenter: dropdown.verticalCenter // 垂直居中width: 80 // 宽度height: 46 // 高度z: 1 // z 坐标}// 显示下拉箭头Image {id: dropdownArrowsource: dropdown.imageSources[0] // 图片资源anchors.right: dropdown.right // 右对齐anchors.rightMargin: 10 // 右边距anchors.verticalCenter: dropdown.verticalCenter // 垂直居中width: 26 // 宽度height: 22 // 高度z: 2 // z 坐标MouseArea {anchors.fill: parent // 填充父容器onClicked: {dropdownMenu.visible =!dropdownMenu.visible // 点击时切换菜单的可见性}}}// 监听 imageSources 属性的变化onImageSourcesChanged: {for (var i = 1; i < dropdown.imageSources.length; i++) {dropdownModel.append({imageSource: dropdown.imageSources[i]}) // 将图片资源添加到模型中}}// 定义菜单容器Rectangle {id: dropdownMenuWrapperclip: true // 剪辑子项width: dropdown.width // 宽度height: (dropdown.imageSources.length - 1) * 46 // 高度y: dropdown.height // y 坐标color: "transparent" // 背景颜色border.color: "#DDDDDD" // 边框颜色border.width: 0 // 边框宽度z: -2 // z 坐标radius: 5 // 圆角半径// 定义菜单ListView {id: dropdownMenuwidth: dropdown.width // 宽度visible: false // 初始不可见z: -10 // z 坐标model: ListModel {id: dropdownModelComponent.onCompleted: {}}onVisibleChanged: {if (visible) {showAnimation.start() // 显示动画dropdownMenuWrapper.border.width = 1 // 显示边框} else {hideAnimation.start() // 隐藏动画dropdownMenuWrapper.border.width = 0 // 隐藏边框}}delegate: Rectangle {id: rectcolor: "transparent" // 背景颜色radius: 5 // 圆角半径width: dropdown.width * 0.95 // 宽度anchors.horizontalCenter: parent.horizontalCenter // 水平居中height: 46 // 高度Image {source: imageSource // 图片资源anchors.left: parent.left // 左对齐cache: true // 缓存图片}MouseArea {anchors.fill: parent // 填充父容器onClicked: {dropdown.currentIndex = index + 1 // 点击时更新当前选中的索引dropdownMenu.visible = false // 隐藏菜单}onPressed: {parent.color = "#cccccc" // 按下时更新背景颜色}onReleased: {parent.color = "transparent" // 释放时更新背景颜色}}}// 显示动画PropertyAnimation {id: showAnimationtarget: dropdownMenuproperty: "height"from: 0to: (dropdown.imageSources.length - 1) * 46duration: 200}// 隐藏动画PropertyAnimation {id: hideAnimationtarget: dropdownMenuproperty: "height"from: (dropdown.imageSources.length - 1) * 46to: 0duration: 200}}}
}

效果

给这数组赋值,图片的高度是46的图片。这里是空数组,需要你给这个数组赋值

你可以把这个文件放入一个qml文件里面,然后使用这个问题就像这样,图片最少是两个,第一个图片是右侧的下拉。之后的图片是下拉的内容


http://www.mrgr.cn/p/03185826

相关文章

力扣HOT100 - 200. 岛屿数量

解题思路&#xff1a; 岛屿题目一般使用dfs。 1.判断是否越界 2.用0&#xff0c;1&#xff0c;2三个状态标识当前格子的状态&#xff08;三个状态比两个状态更清晰&#xff09; 3.向周围四个方向遍历 class Solution {public int numIslands(char[][] grid) {int cnt 0;fo…

R语言银行信用数据SOM神经网络聚类实现可视化

原文链接:http://tecdat.cn/?p=3231 原文出处:拓端数据部落公众号当今社会,“信用”越来越多的人们关注个人或企业,有望获得最高的信用评分,以享受更多的信贷额度,更优惠的利率。 那么我们如何评分信用,并使我们的客户可视化? 自组织地图( SOM )是一种无监督的数据可…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议&#xff08;BDAICSE2024&#xff09;。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

PostgreSql-Install

PostgreSql源码安装 一、源代码下载二、操作系统配置三、编译安装四、启动数据库五、相关命令 PostgreSQL是一个强大的 开源对象关系数据库系统&#xff0c;它使用并扩展了SQL语言&#xff0c;并结合了许多功能&#xff0c;可以安全地存储和扩展最复杂的数据工作负载。 一、源…

第四章:Total Store Order and the x86 Memory Model

chapter4:TSO于X86内存模型 1、为什么需要TSO/x86 处理器内核长期以来使用write buffer来保存已提交的store指令,直到内存系统可以处理这些store请求。当store指令提交时,store请求进入write buffer,而当需要写入的缓存行在内存系统中可以保证缓存一致性时,store请求就退出…

1-内核开发环境ubuntu+virtualbox+mobaXterm搭建

内核开发环境 ubuntuvirtualboxmobaXterm搭建 目录 内核开发环境 ubuntuvirtualboxmobaXterm搭建 1.virtualbox 安装 2.ubuntu 安装 3.网络设置 4.虚拟机安装ssh 服务&#xff0c;更新ubuntu 源安装基本软件 5.mobaXterm 个人免费版本安装 6.总结 本课程教程从0-1开始教…

循环队列的程序接口

循环队列的程序接口 目录循环队列的程序接口队列的说明队列循环队列入队、出队头文件创建队空、队满的判断入队出队验证 队列的说明 队列循环队列入队、出队头文件 /********************************************************************* file name: 循环队列的接口* author…

notepad++ 安装compare文件对比插件失败解决办法

1.首先notepad++ 安装compare方法: 在菜单栏点击“插件”》插件管理 搜索:compare 点击YES 因为国内网络原因,可能会安装失败,也可能安装比较久。 2.自己解压安装:下载解压包: 链接:https://pan.baidu.com/s/1B8hZJCJ8PLZgwdYzQeWGpQ提取码:7n2s点击打开插件目录: 目…

mybatisplus乐观锁(单个任务)

乐观锁:在关系数据库管理系统里,乐观并发控制(又名“乐观锁”,Optimistic Concurrency Control,缩写“OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事…

dotnet 8 版本与银河麒麟V10和UOS系统的 glib 兼容性

刚刚好 dotnet 8 的 glib 版本足够旧,可以运行本文记录于 2024.04.26 如果你阅读本文时间距离本文记录时间过远,可能本文记录的信息已失效 dotnet 根据 dotnet 的 supported-os 文档记录,当前的 dotnet 8 是 8.0.4 版本,官方说明是支持 Debian 11 及以上版本 实际测试可以在…

dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法

本文将告诉大家一个在 ZipArchive 里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下/// <summary>/// 追加文件夹到压缩文件里面/// </summary>/// <param name="archive"></param>/// <param name="sour…

postgresql中视图建立,字段拼接,同一个表的多行之间的多个字段相减

首先表是这样的 CREATE TABLE public.tb_realtime_data (s_id varchar(48) NOT NULL,sensor_name varchar(48) NULL,sensor_index_code varchar(48) NULL,sensor_value numeric(20,10) NULL,statistics_status int4 NULL,alarm_time timestamp NOT NULL,create_time timestamp …

【C++】:构造函数和析构函数

目录 前言一&#xff0c;构造函数1.1 什么是构造函数1.2 构造函数的特性1.3 总结 二&#xff0c;析构函数2.1 什么是析构函数2.2 析构函数的特性2.3 总结 前言 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何…

【线性代数 C++】求逆矩阵

对于 n n n阶矩阵 A A A&#xff0c;如果有 n n n阶矩阵 B B B&#xff0c;使 A B B A E ABBAE ABBAE&#xff0c;则说 A A A是可逆的&#xff0c;并把 B B B称为 A A A的逆矩阵. A A A的逆矩阵记作 A − 1 A^{-1} A−1&#xff0c;则 B A − 1 BA^{-1} BA−1.若 ∣ A ∣ ≠…

“一个有趣的C语言代码”分析

“一个有趣的C语言代码” 一个有趣的C语言代码-流浪的海豚-ChinaUnix博客 #include <stdio.h> int print() {printf("hello world!\n");return 0; } int main(void) {long base[0];long* result base3;*(result1) *result;*result (long)print;return 0; …

【韩国】UE5的MetaHuman确实可以导入Blender进行编辑。

UE5的MetaHuman确实可以导入Blender进行编辑。根据网络上的信息&#xff0c;你可以将MetaHuman模型导出为FBX文件&#xff0c;然后在Blender中进行修改。修改完成后&#xff0c;你可以将其重新导入到Unreal Engine 5中4。请注意&#xff0c;当你在Blender中编辑模型时&#xff…

SQLAlchemy中filter()和filter_by()有什么区别

1.filter用类名.属性名,比较用==,filter_by直接用属性名,比较用= 2.filter不支持组合查询,只能连续调用filter来变相实现。 session.query(Dashboard) .filter(Dashboard.id.in_(dashboard_ids_int)).all() dashboard = ( db.session.query(Dashboard) .filter_by(id=dashb…

一次违法网站的渗透经历

0x01 前言 在一次攻防演练中&#xff0c;我发现了一个有趣的渗透路径。在信息收集阶段&#xff0c;我注意到目标网站和用户资产网站共享相同的IP网段。这意味着它们可能在同一台服务器上托管&#xff0c;或者至少由同一家互联网服务提供商管理。这种情况为我们的渗透测试提供了…

AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)

目标&#xff1a;使用容器化技术快速部署AI应用进行开发。 注意&#xff1a;从 Docker 19.03 开始&#xff0c;Docker 引入了对 NVIDIA GPU 的原生支持&#xff0c;因此若AI要调用GPU算力的话docker版本也是有要求的&#xff0c;后面博客测试。 当然本篇博客还没设计到GPU的调…

IIR滤波器的设计与实现(内含设计IIR滤波器的高效方法)

写在前面&#xff1a;初学者学习这部分内容&#xff0c;要直接上手写代码可能会感到比较困难&#xff0c;我这里推荐一种高效快速的设计IIR,FIR滤波器的方法——MATLAB工具箱&#xff1a;filterDesigner。打开的方法很简单&#xff0c;就是在命令行键入&#xff1a;filterDesig…