qml 实现数值键盘

import QtQuick 2.0import QtQuick.Layouts 1.12
import"../pad"
// PasswordKeyboard.qml
import QtQuick 2.12ColumnLayout {id: keyboardspacing: 8// 键盘标题Text {text: "安全输入"font.pixelSize: 16color: "#666"Layout.alignment: Qt.AlignHCenterLayout.bottomMargin: 10}// 提示Text {text: "输入密码时,请确保周围环境安全"font.pixelSize: 14color: "#ff5252"Layout.alignment: Qt.AlignHCenter}// 键盘区域GridLayout {Layout.alignment: Qt.AlignHCentercolumns: 4columnSpacing: 10rowSpacing: 10// 数字按键 1-9Repeater {model: 9Keybutton {text: index + 1width: 70height: 60onClicked: if (activeInputField) activeInputField.text += text}}// 特殊按键Keybutton {text: "0"width: 70height: 60onClicked: if (activeInputField) activeInputField.text += text}Keybutton {text: "⌫"width: 70height: 60bgColor: "#ff5252"onClicked: {if (activeInputField && activeInputField.text.length > 0) {activeInputField.text = activeInputField.text.slice(0, -1);}}}Keybutton {text: "完成"width: 70height: 60bgColor: "#4CAF50"onClicked: keyboardClosed()}}// 信号signal keyboardClosed()// 属性property var activeInputField: null
}
// KeyButton.qml
import QtQuick 2.12Rectangle {id: buttonwidth: 60height: 50radius: 8// 公共属性property string text: ""property color bgColor: "white"property color textColor: "#333"// 信号signal clicked()color: mouseArea.pressed ? Qt.darker(bgColor, 1.1) : bgColorborder.color: "#ddd"border.width: 1Text {text: button.textfont.pixelSize: 20font.bold: truecolor: button.textColoranchors.centerIn: parent}MouseArea {id: mouseAreaanchors.fill: parentonClicked: button.clicked()}
}

我们注意到代码中有几个问题需要修正:

1. 特殊按键部分有两个按钮:一个是"0"按钮,另一个是退格按钮(但文本是".",这可能是设计错误,因为通常退格按钮用图标或"←"表示,而小数点按钮是".")。

2. 当前代码中,小数点按钮实际上被用作退格(删除最后一个字符)功能,这显然是不正确的。根据按钮的文本,它应该是输入小数点,但点击事件却是删除。

3. 另外,我们注意到有一个“0”按钮,宽度为140,而其他按钮宽度为70,这样布局可能会出现问题,因为GridLayout默认是左到右排列,并且我们设置了列间距。我们打算将键盘布局为3列,但是目前数字1-9有9个按钮(3x3),然后下面一行应该是一个宽按钮(0)占两列,然后一个小按钮(退格)占一列。但是代码中并没有明确设置列数(columns属性被注释了),而是通过flow和每个按钮的宽度来布局。 根据代码,我们想要3列布局,那么: 第一行:1,2,3 第二行:4,5,6 第三行:7,8,9 第四行:0(占两列宽度)和 一个退格按钮(占一列) 但是目前代码中,Repeater生成了9个按钮(1-9),然后接着是两个按钮:0和退格(当前显示为小数点,但功能是退格)。 问题在于,GridLayout在没有设置列数的情况下,会根据子项的宽度自动换行。我们期望第四行只有两个按钮:一个占两列(宽度140,等于两个70加上一个列间距10)的0按钮,和一个占一列(70)的退格按钮。但是,由于GridLayout的列间距为10,所以总宽度应该是:两列宽度(70*2)加上两个列间距(10*2)等于160,而0按钮宽度140小于160,所以实际上0按钮只会占据一列多,而不会自动跨两列。 因此,我们需要为0按钮设置Layout.columnSpan属性,让它横跨两列。同时,我们需要设置GridLayout的columns属性为3,这样布局才能按照3列来排列。

修改建议: 1. 取消注释columns: 3,设置为3列。

2. 为0按钮设置Layout.columnSpan: 2,使其横跨两列。 3. 将小数点按钮的文本改为表示退格的符号(比如"←"),并调整其功能为删除最后一个字符。同时,添加一个小数点按钮,但是这里我们注意到,原代码中并没有小数点按钮,所以我们需要添加。 4. 但是原设计似乎只有10个键(1-9,0,退格),而小数点按钮缺失。根据常见数字键盘,通常有0、小数点、退格。因此,我们可能需要调整第四行为三个按钮:0、小数点、退格。但这样第四行就有三个按钮,而0按钮就不需要跨两列了。或者另一种常见布局是第四行有0(占一列)、小数点(占一列)、退格(占一列)。但是这样第四行就是三个按钮,与前三行对齐。 考虑到原设计是0按钮占140(两个70的宽度),而退格按钮占70,并且列间距10,那么0按钮的宽度140实际上等于两个按钮的宽度(70*2)加上一个列间距(10)。因此,如果我们设置3列,那么0按钮横跨两列,退格按钮占一列,这样第四行就只需要两个按钮(0和退格),而小数点没有位置了。 所以,我们需要重新设计第四行,有两种方案: 方案一:第四行三个按钮:0、.、退格,每个按钮宽度70。这样0按钮就不需要跨列了。 方案二:保持0按钮跨两列,然后退格按钮占一列,但这样就没有小数点按钮的位置了。 根据需求,我们需要小数点按钮。因此,我们采用方案一:第四行三个按钮:0、小数点、退格。 调整如下: 1. 将Repeater的9个按钮(1-9)生成后,再添加三个按钮:0、小数点、退格。 2. 设置GridLayout的columns为3,这样每行三个按钮。 3. 调整0按钮的宽度为70(与其他按钮一致),不再跨列。 但是,原代码中0按钮后面只有一个按钮(退格,但文本是小数点)。现在我们需要添加小数点按钮。 因此,我们将特殊按键部分拆分成三个按钮:0、小数点、退格。 同时,修正退格按钮的文本和功能: - 小数点按钮:文本为".",点击事件是追加小数点。 - 退格按钮:文本可以是"←"或"退格",点击事件是删除最后一个字符。

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

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

相关文章

PID控制算法

文章目录引言一、基本原理1.1.简介1.2.开环与闭环1.3.PID 的公式1.3.1.比例项(Proportional)1.3.2.积分项(Integral)1.3.3.微分项(Differential)1.4.连续形式与离散形式的 PID 公式1.4.1.连续形式1.4.2.离散…

MyBatis 动态数据源切换在 Spring Boot 环境下的实现方案

第一章 需求背景与技术选型1.1 多数据源场景概述在大型企业级应用中,单一数据库往往无法满足高并发和多业务线的需求,因此需要引入 多数据源 的架构设计。常见的多数据源场景包括:读写分离、多租户、分库分表以及数据源负载均衡等。读写分离&…

PCA降维理论详解

文章目录一、什么是PCA?二、为什么需要降维?三、PCA的数学原理与详细推导视角一:最大化投影方差(Maximizing Variance)视角二:最小化重构误差(Minimizing Reconstruction Error)四、…

Android RxJava变换操作符详解

RxJava作为响应式编程在Android开发中的利器,其强大的变换操作符能够帮助我们优雅地处理数据流。本文将深入讲解RxJava中最常用的变换操作符及其实际应用场景。一、RxJava变换操作符概述变换操作符(Transformation Operators)用于对Observable发射的数据序列进行变换…

开源数据发现平台:Amundsen 快速上手指南

Amundsen 是一个数据发现和元数据引擎,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前,它通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(例如,查询频率高的表格会优先于查询…

【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例

引言 在信息安全领域,密码算法是数据保护的核心基石。2010 年,中国国家密码管理局发布了 SM2 椭圆曲线公钥密码算法,作为国产密码标准的核心成员,它凭借高效安全的特性,逐步替代 RSA 等国际算法,广泛应用于…

QT开发中如何加载第三方dll文件

文章目录🔧 一、隐式加载(静态链接)操作步骤:⚙️ 二、显式加载(动态链接,推荐使用QLibrary)操作步骤:💻 三、直接调用Windows API(仅Windows)⚠️…

后端学习资料 持续更新中

数据库: 该网址包含:图解MySql, 看明白谁也问不倒你~ 图解计算机网络、操作系统、计算机组成、MySQL、Redis,让天下没有难懂的八股文!https://xiaolincoding.com/

《嵌入式Linux应用编程(六):并发编程基础:多进程exec函数族及多线程基础》

一、exec函数族在一个进程里面执行另一个文件本质&#xff1a;将文本区的指令代码替换成exec要执行的指令#include <unistd.h>参数&#xff1a;path:要执行的可执行文件的路径和名称arg:执行该可执行文件时需要传递的参数NULL&#xff1a;参数传递结束标志 返回值&#x…

【121页PPT】智慧方案智慧综合体智能化设计方案(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2501_92808859/91654007 资料解读&#xff1a;【121页PPT】智慧方案智慧综合体智能化设计方案 详细资料请看本解读文章的最后内容 一、项目概述与智能化总…

Linux网络基础(一)

目录 计算机网络背景 网络发展 初识 "协议" 网络协议初识 协议分层 软件分层的好处 打电话例子 OSI七层模型 TCP/IP五层(或四层)模型 参考资料 再识协议 为什么要有 TCP/IP 协议&#xff1f; 什么是 TCP/IP 协议&#xff1f; TCP/IP 协议与操作系统的关系(宏观上&…

MySQL多表查询案例

多表查询本文介绍了多表查询中的表关系概念和操作方法。主要内容包括&#xff1a;1.三种表关系类型&#xff08;一对多、多对多、一对一&#xff09;及其实现方式&#xff1b;2.多表查询的四种连接方式&#xff08;内连接、左外连接、右外连接、自连接&#xff09;及语法&#…

Dify 从入门到精通(第 36/100 篇):Dify 的插件生态扩展

Dify 从入门到精通&#xff08;第 36/100 篇&#xff09;&#xff1a;Dify 的插件生态扩展 Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#xff1a;从…

【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件

在Spring Boot工程中&#xff0c;若未识别到resources/db文件夹下的SQL文件&#xff0c;通常与资源路径配置、构建工具设置或代码加载方式有关。以下是逐步排查和解决方案&#xff1a;​​1. 确认SQL文件存放路径​​Spring Boot默认从类路径&#xff08;classpath:&#xff09…

【Java】网络编程(4)

1. 再谈 UDP 报文长度&#xff1a;也是 2 个字节&#xff0c; 0 - 65535&#xff0c;也就是 64 kb。这表示一个 UDP 数据包一次最多只能传输 64 kb 的数据校验和&#xff1a;验证数据是否在传输过程中发生修改。数据在传输过程中可能受到信号干扰&#xff0c;发生 “比特翻转”…

QT(事件)

一、事件前言事件是QT的三大机制之一&#xff0c;一定程度上信号和槽也属于事件的一种 QT中的事件指哪些&#xff1a;窗口关闭&#xff0c;窗口显示&#xff0c;敲击键盘&#xff0c;点击鼠标左键、鼠标右键、鼠标滚轮&#xff0c;文件拖放等等1、事件循环QT中的所有事件&#…

基于 Vue2+Quill 的富文本编辑器全方案:功能实现与样式优化

在 Web 开发中&#xff0c;富文本编辑器是内容管理系统、博客平台等应用的核心组件。本文将详细介绍如何基于 Vue 和 Quill 构建一个功能完善、样式精美的富文本编辑器&#xff0c;重点解决字体字号选项冗长、样式不美观及功能完整性问题&#xff0c;提供可直接部署使用的完整方…

C#内嵌字符串格式化输出

内嵌字符串格式输出 double speedOfLight 299792.458;System.Globalization.CultureInfo.CurrentCulture System.Globalization.CultureInfo.GetCultureInfo("nl-NL"); string messageInCurrentCulture $"The speed of light is {speedOfLight:N3} km/s.&quo…

ThreeJS程序化生成城市大场景底座(性能测试)

一、简介基于矢量geojson数据构建建筑、植被、道路等&#xff0c;实现城市场景底座。涉及渲染的性能优化无非就是众所周知的那些事儿。视锥剔除、mesh合并、减少draw call、四叉树、八叉树、数据压缩、WebWorker、着色器优化等。下面是对东莞市数十万建筑以及海量3D树的渲染测试…

​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合

​电风扇离线语音芯片方案设计与应用场景&#xff1a;基于 8 脚 MCU 与 WTK6900P 的创新融合一、引言在智能家居领域蓬勃发展的当下&#xff0c;用户对于家电产品的智能化和便捷性需求日益增长。传统的电风扇控制方式&#xff0c;如按键操作或遥控器控制&#xff0c;在某些场景…