当前位置: 首页 > news >正文

102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程

自定义实现的Table控件,支持跨qt版本,兼容qt5,qt6!

截图如下所示:

黑色风格如下所示:

视频演示入口:Qt QML QianWindowV2.5(新增曲线综合示例、QML最全Table交互示例、支持qt5/qt6)_哔哩哔哩_bilibili

1.示例页面入口

源码已更新至QianWindow2.5版本中,位于Table交互分页里,如下图所示:

分页界面实现位于pages/QianTableTestPages/QianTableEditPage.qml,如下图所示:

2.Table新增属性-多列固定

多列固定用到columnfixedEnable使能属性和columnfixedNum固定列数属性,假如columnfixedEnable为true, columnfixedNum为3则表示固定前3列表头。

3.Table新增属性-行列拖拽

行列拖拽相关属性如下所示:

  • rowDragEnable: bool, 行拖拽使能,如果为false,则无法进行拖拽,并且行拖拽图标也不会显示
  • rowDragWidth, int, 行拖拽图标的宽度,一般默认值即可
  • rowDragIndex, int, 行拖拽索引号,未拖拽时的值为-1,如果正在拖拽则会实时更新值
  • columnDragEnable: bool, 列拖拽使能
  • columnDragIndex, int, 列拖拽索引号,未拖拽时的值为-1,如果正在拖拽则会实时更新值
  • columnDragStretchIndex: int, 列伸展索引号,比如对某列进行拉伸,未拖拽时的值为-1
  • dragContentBackColor: color, 拖拽源对象的背景色。
  • dragLineColor: color, 拖拽到目标位置的提示线颜色
  • signal rowDragMoved(int preRow, int crtRow) : 行拖拽信号,preRow是拖拽目标之前的行号, ctrRow是拖拽目标当前的行号

4.Table新增属性-标题菜单栏

标题菜单栏属性为headerMenu,当用户右击时就会调用headerMenu显示,并设置headerMenuColumnIdx为对应点击所在的列号

示例界面如下所示:

对应代码如下所示:

             headerMenu: Menu {id: _headerMenuContent MenuItem {text: "    表头固定至此列"font.pixelSize: 14implicitWidth: 103implicitHeight: 28font.family: "Microsoft Yahei"onTriggered: {table.columnfixedEnable = truetable.columnfixedNum = table.headerMenuColumnIdx + 1}}MenuItem {text: "← 左侧插入新列"font.pixelSize: 14implicitWidth: 103height: visible ? 28 : 0visible: table.headerMenuColumnIdx != 0font.family: "Microsoft Yahei"onTriggered: {if (tableHeaderComp.status != Component.Ready) {message('info', "加载失败:" + tableHeaderComp.errorString())return;}let i = _headerMenuContent.getValidReserveColumnIdx();if(i < 0) {message('info', "已超出最大支持扩展")return;}// ...}}MenuItem {text: "→ 右侧插入新列"font.pixelSize: 14implicitWidth: 103height: visible ? 28 : 0visible: table.headerMenuColumnIdx != table.headers.length-1font.family: "Microsoft Yahei"onTriggered: {if (tableHeaderComp.status != Component.Ready) {message('info', "加载失败:" + tableHeaderComp.errorString())return;}let i = _headerMenuContent.getValidReserveColumnIdx();if(i < 0) {message('info', "已超出最大支持扩展")return;}//...}}MenuItem {text: "    重命名标题"font.pixelSize: 14implicitWidth: 103implicitHeight: 28font.family: "Microsoft Yahei"onTriggered: {let target = table.headers[table.headerMenuColumnIdx]skinQianInputDialog.dialogOpen(`更改标题:`, table.headers[table.headerMenuColumnIdx].display, function(defaultInputText, text) {if(!text.length) {message('info', "更改标题不能为空");return;}if(defaultInputText == text) {return;}target.display = text})}}MenuItem {text: "✕ 删除该列"font.pixelSize: 14implicitWidth: 103implicitHeight: 28font.family: "Microsoft Yahei"onTriggered: {// ...}}}

5.单元格委托内置委托使用

每行每列对应某个数据都称为一个个单元格,由于Table每列的显示委托和编辑委托往往是一样的,所以最新Table的单元格委托存在TableHeader标题列类中。

内置委托相关属性介绍如下所示:

  • cellDelegateType: enum CellDelegateType,单元格委委托, 默认为文本委托,其它值如下所示:
    • CellDelegateTypeText 文本委托,如下图所示:
    • CellDelegateTypeColorComboBox 带颜色下拉框委托,如下图所示:
    • CellDelegateTypeUsersComboBox 多用户下拉框委托,如下图所示:
    • CellDelegateTypeCalendar 日期日历委托,如下图所示:
    • CellDelegateTypeTime 时间委托,如下图所示:
    • CellDelegateTypeCustom 自定义委托,如果设置为CellDelegateTypeCustom,则需要设置cellDelegateCustomShowItem属性指定显示委托对象

如果只想显示不编辑,则设置customEditEnable属性为false即可,customEditEnable默认为true。

如果我们需要设置为自定义显示委托,则设置cellDelegateType属性为CellDelegateTypeCustom,并给cellDelegateCustomShowItem属性设置一个基于Item子类的显示委托即可。

Table给显示委托提供了多个附加属性,常用的如下所示:

  • modeldata: key或者keys对应的数据
  • rowIdx: 行号
  • columnIdx: 列号

6.重点概要

如果设置cellDelegateType属性为CellDelegateTypeCustom,并且customEditEnable为true时,假如未设置cellDelegateCustomEditItem编辑委托对象,那么编辑时默认为文本方式,可以参考Table组件界面下的成绩列:

如果我们想要设置显示为内置委托,编辑时为自定义委托,则设置cellDelegateCustomEditItem编辑委托对象即可,可以参考Table组件界面下的姓名列:

如果我们想设置编辑委托是一个弹出型窗口,设置cellDelegateCustomEditItem编辑委托对象的同时,还需要设置cellEditHideCellDelegateShowLayer为false,否则编辑时会自动隐藏掉显示委托,可以参考Table组件界面下的日期列:

如果我们编辑的内容需要进行审核确认,可以设置customEditConfirmCallback属性,比如Table组件界面下的成绩列限制用户只能输入0~100的值,对应的代码如下所示:

如果cellDelegateCustomShowItem显示委托属性是个交互性控件(比如是个button),那么我们需要设置customEditEnable为false才能进行交互,否则会被编辑委托占用。


 

相关文章:

102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程

自定义实现的Table控件&#xff0c;支持跨qt版本&#xff0c;兼容qt5,qt6&#xff01; 截图如下所示: 黑色风格如下所示&#xff1a; 视频演示入口&#xff1a;Qt QML QianWindowV2.5(新增曲线综合示例、QML最全Table交互示例、支持qt5/qt6)_哔哩哔哩_bilibili 1.示例页面入口…...

文章管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;作者管理&#xff0c;文章管理&#xff0c;文章分类管理&#xff0c;论坛&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;文章&#xff0c;论坛&#xff0c;我的 开发系统…...

Ubuntu22.04安装NIVIDIA显卡驱动总结

1.首先在安装驱动时需要判断系统有无GPU以及GPU的型号 可以参考这篇文章&#xff1a; https://blog.51cto.com/u_13171517/8814753#:~:textubuntu%20%E7%B3%BB%E7%BB%9F%20%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%E7%B3%BB%E7%BB%9F%E6%9C%89%E6%B2%A1%E6%9C%89GPU%201%20%E6%…...

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…...

数据结构之初始二叉树(2)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 二叉树的前置知识&#xff08;概念、性质、、遍历&#xff09; 通过上篇文章的学习&#xff0c;我们…...

如何预防最新的baxia变种勒索病毒感染您的计算机?

引言 在当今数字化时代&#xff0c;网络安全威胁层出不穷&#xff0c;其中勒索病毒已成为企业和个人面临的重大挑战之一。近期&#xff0c;.baxia勒索病毒以其高隐蔽性和破坏性引起了广泛关注。本文将详细介绍.baxia勒索病毒的特点、传播方式&#xff0c;并给出相应的应对策略…...

git列出提交记录的文件路径

一、如何列出某次提交记录中修改过/新增的文件&#xff1f; 方法1&#xff1a;使用 git diff-tree 命令来查看某个提交记录中修改过/新增的文件。具体来说&#xff0c;你可以使用以下命令&#xff1a; git diff-tree --no-commit-id --name-only -r <commit-hash>命令解…...

微信小程序密码 显示隐藏 真机兼容问题

之前使用type来控制&#xff0c;发现不行&#xff0c;修改为password属性即可 <van-fieldright-icon"{{passwordType password? closed-eye:eye-o}}"model:value"{{ password }}"password"{{passwordType password ? true: false}}"borde…...

C# 中,使用 LINQ 示例 备忘

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串&#xff0c;没有编译时类型检查或 IntelliSense 支持。 此外&#xff0c; … 对于编写查询的开发者来说&#xff0c;LINQ 最明显的“语言集成”部分就是查询表达式。 …...

GaussDB DWS 详解

文章目录 GaussDB DWS 详解一、简介二、DWS的分布式架构架构概述关键组件 三、分布式查询数据查询流程SQL执行的示例 批注&#xff1a;本文引鉴了Forlogen博主的一些内容&#xff0c;并加以补充&#xff0c;以供学习了解。 GaussDB DWS 详解 一、简介 DWS(Data Warehouse Ser…...

【256 Days】我的创作纪念日

目录 &#x1f33c;01 机缘 &#x1f33c;02 收获 &#x1f33c;03 日常 &#x1f33c;04 成就 &#x1f33c;05 憧憬 最近收到官方来信&#xff0c; 突然发现&#xff0c;不知不觉间&#xff0c;距离发布的第一篇博客已过256天&#xff0c;这期间我经历了春秋招、毕业答辩…...

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环&#xff0c;无论是在影视特效的震撼场面&#xff0c;还是在游戏角色的生动表现&#xff0c;3D技术都扮演着至关重要的角色。而在这一领域&#xff0c;Maya和Blender这两款软件&#xff0c;以其强大的功能和广泛的应用&#xff0c…...

spring.factories详解

spring.factories 是 Spring Boot 中一个重要的配置文件&#xff0c;它用于实现自动配置类和框架的扩展机制。这个文件通常位于项目的 resources/META-INF 目录下&#xff0c;并且遵循 Java 的 .properties 文件格式。以下是对 spring.factories 的详细解释&#xff1a; 自动配…...

从Docker Hub 拉取镜像一直失败超时?这些解决方案帮你解决烦恼

设置国内源&#xff1a; 提示&#xff1a;常规方案&#xff08;作用不大&#xff09; 阿里云提供了镜像源&#xff1a;https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后你会获得一个专属的地址 使用命令设置国内镜像源&#xff1a;通过vim /etc/docker/d…...

【pbootcms】新环境搭建环境安装时发生错误

【pbootcms】新环境搭建环境安装时发生错误 提示一下内容&#xff1a; 登录请求发生错误&#xff0c;您可按照如下方式排查: 1、试着删除根目录下runtime目录,刷新页面重试 2、检查系统会话文件存储目录是否具有写入权限; 3、检查服务器环境pathinfo及伪静态规则配置; 先按照…...

C语言之qsort函数

一、qsort 1.库函数qsort qsort是库函数&#xff0c;直接可以用来排序数据&#xff0c;底层使用的是快速排序。 qsort函数可以排序任意类型的数据。 2.头文件 #include<stdlib.h> 3.参数讲解 void*类型的指针是无具体类型的指针&#xff0c;这种类型的指针的不能直接解…...

R 数据重塑

R 数据重塑 在数据分析领域&#xff0c;R 语言以其强大的数据处理和可视化能力而著称。数据重塑是数据分析过程中的一个重要步骤&#xff0c;它涉及将数据从一种形式转换为另一种更适宜进行分析的形式。R 语言提供了多种工具和包来简化这一过程&#xff0c;如 dplyr、tidyr 和…...

opencascade AIS_InteractiveContext源码学习8 trihedron display attributes

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…...

【云岚到家】-day05-6-项目迁移-门户-CMS

【云岚到家】-day05-6-项目迁移-门户-CMS 4 项目迁移-门户4.1 迁移目标4.2 能力基础4.2.1 缓存方案设计与应用能力4.2.2 静态化技术应用能力 4.3 需求分析4.3.1 界面原型 4.4 系统设计4.4.1 表设计4.4.2 接口与方案4.4.2.1 首页信息查询接口4.4.3.1 数据缓存方案4.4.3.2 页面静…...

linux彻底卸载docker

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 要彻底卸载 Docker 及其相关组件&#xff0c;可以按照以下步骤进行操作。请注意&#xff0c;这些步骤会删除 Docker 安装的所有容器、镜…...

杰理之ota_修复edr升级数组越界问题【篇】

...

上海交通大学LaTeX学术演示模板:5分钟创建专业幻灯片的完整教程

上海交通大学LaTeX学术演示模板&#xff1a;5分钟创建专业幻灯片的完整教程 【免费下载链接】SJTUBeamermin 上海交通大学 LaTeX Beamer 幻灯片模板 - VI 最小工作集 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUBeamermin 想要快速制作符合上海交通大学视觉规范的…...

从XML-RPC到gRPC:一个老派RPC协议如何影响了今天的微服务通信设计

从XML-RPC到gRPC&#xff1a;技术演进中的通信范式变迁 二十年前&#xff0c;当Dave Winer和Microsoft首次提出XML-RPC协议时&#xff0c;他们可能不会想到这个简单的远程调用机制会成为现代微服务架构的启蒙。在1998年的技术背景下&#xff0c;XML-RPC以其基于HTTP和XML的简洁…...

如何快速掌握UABEA:新手必备的Unity资源编辑完整指南

如何快速掌握UABEA&#xff1a;新手必备的Unity资源编辑完整指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾经想要修改自己喜欢的Unity游戏&#xff0c;却因为复杂的资源格式而束手无策&…...

终极Zotero插件市场:一站式插件发现与管理完全指南

终极Zotero插件市场&#xff1a;一站式插件发现与管理完全指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing and installing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons Zotero插件市场&a…...

Blender3mfFormat终极指南:开启3D打印无缝工作流的新时代

Blender3mfFormat终极指南&#xff1a;开启3D打印无缝工作流的新时代 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾为Blender与3D打印软件之间的格式转换而烦恼…...

5分钟掌握BepInEx游戏插件框架:Unity模组开发的完整解决方案

5分钟掌握BepInEx游戏插件框架&#xff1a;Unity模组开发的完整解决方案 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx&#xff08;Bepis Injector Extensible&#xff0…...

质谱仪核心部件与色谱联用技术全解析:从原理到实战应用

1. 质谱分析&#xff1a;从“称重”分子到解码物质世界在化学、生物、医药乃至环境科学领域&#xff0c;我们常常需要回答一个看似简单却至关重要的问题&#xff1a;这个东西到底是什么&#xff1f;它由什么组成&#xff1f;含量有多少&#xff1f;面对一瓶成分不明的液体、一块…...

什么是占位符

占位符就是字符串里预留空位&#xff0c;后面填上真实数据&#xff0c;PyCharm里直接写代码就能运行调试1.%格式化占位符&#xff08;旧式格式化&#xff09;语法格式&#xff1a;"模板字符串"%(数据1&#xff0c;数据2...)基础类型占位符1.%s &#xff1a;适配字符串…...

AI辅助科研的加速逻辑与隐性成本拆解

1. 这不是科幻片里的桥段&#xff1a;当AI真正坐进实验室&#xff0c;它在改写科研的底层规则 “AI加速科学发现”这个说法&#xff0c;最近两年几乎成了学术会议开场白的标配。但如果你真去翻过Nature、Science上那些标着“AI-driven discovery”的论文&#xff0c;会发现一个…...