qt带后缀单位的QLineEdit

news/2024/11/29 19:50:11/

在这里插入图片描述
QLineEditUnit.h

#pragma once
#include <QLineEdit>
#include <QPushButton>class QLineEditUnit : public QLineEdit
{Q_OBJECT
public:QLineEditUnit(QWidget* parent = Q_NULLPTR);~QLineEditUnit();//获取编辑框单位QString UnitText()const;//设置编辑框单位void SetUnitText(const QString& unitText);private:QPushButton* m_unitButton = nullptr;//单位文本按钮
};

QUnitLineEdit.cpp

#include "QLineEditUnit.h"
#include <QLayout>
#include <QStyle>
QLineEditUnit::QLineEditUnit(QWidget* parent) : QLineEdit(parent)
{m_unitButton = new QPushButton;//单位按钮扁平无边框m_unitButton->setStyleSheet("border-style:solid;color: rgba(77, 155, 213, 1);");m_unitButton->setFlat(true);//单位加入布局QBoxLayout* layout = new QBoxLayout(QBoxLayout::LeftToRight);layout->addStretch();layout->setSpacing(0);//单位按钮的Margins//右边留了13px,留给单位(按钮)layout->setContentsMargins(0, 0, 13, 0);layout->addWidget(m_unitButton);this->setLayout(layout);
}QLineEditUnit::~QLineEditUnit()
{
}QString QLineEditUnit::UnitText() const
{return   this->m_unitButton->text();
}void QLineEditUnit::SetUnitText(const QString& unitText)
{if (unitText.isEmpty() || this->m_unitButton->text() == unitText){return;}m_unitButton->setFont(this->font());this->m_unitButton->setText(unitText);// this->m_unitButton->setVisible(true);//获得文字的宽度int width = this->fontMetrics().width(m_unitButton->text());m_unitButton->setFixedWidth(width);//到单位开头了就往下显示,防止往后输入的内容有一部分在按钮下面QBoxLayout* layout = (QBoxLayout*)this->layout();QMargins margins = layout->contentsMargins();setTextMargins(margins.left(), margins.top(), width + margins.right(), margins.bottom());
}

然后再界面,先拖拽一个lineEdit,然后右键提升
在这里插入图片描述
所有的lineEdit都提升为带单位的
在这里插入图片描述
把lineEdit的指针强制类型转换成带单位的指针
其实好像我做的强制类型转换没什么必要,多此一举
可以直接用


http://www.ppmy.cn/news/1379631.html

相关文章

docker离线搭建仓库

要在Docker中搭建本地仓库&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先安装 Docker。根据不同的操作系统选择合适的版本并完成安装过程。打开命令行工具&#xff08;如Terminal或PowerShell&#xff09;&#xff0c;运行以下命令来创建一个新的容器并将其设置为本地…

先缓存第二集抖音接入 ,最近加班猛,就分享简单的知识,如何使用:关于使用replace的用法正则表达式

1、需求&#xff1a;比如在cocos creator策划让你制作一个预制体&#xff0c;标题要读取配置&#xff0c;然后中间显示的内容要滚动的&#xff0c;要做成一个通用的&#xff0c;然后给到的配置表是这样子的: 配置表&#xff1a;假设字段是这样子的 content "内容标题&…

redis最新版本在Windows系统上的安装

一、说明 这次安装操作主要是根据redis官网说明&#xff0c;一步步安装下来的&#xff0c;英语比较好的同学&#xff0c;可以直接看文章底部的超链接1&#xff0c;跳到官网按步操作即可。 目前redis的最新稳定版本为redis7.2。 二、Windows环境改造 Redis在Windows上不被官方…

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断&#xff1a;在主程序…

cpu masks的初始化

在内核中&#xff0c;有几个位图变量是用作标识cpu数量和状态的&#xff0c;它们分别是&#xff1a; 变量名称用途循环所使用的宏cpu_possible_mask系统中有多少个可以运行的cpu核for_each_possible_cpucpu_present_mask系统中有多少个可处于运行状态的cpu核for_each_present_…

【漏洞复现】Linksys E2000 position.js 身份验证绕过漏洞(CVE-2024-27497)

0x01 产品简介 Linksys E2000是一款由思科&#xff08;Cisco&#xff09;品牌推出的无线路由器&#xff0c;它是一款支持2.4GHz和5GHz双频段的无线路由器&#xff0c;用户可以避开拥挤的2.4GHz频段&#xff0c;独自享受5GHz频段的高速无线生活。 0x02 漏洞概述 Linksys E200…

Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战

上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码&#xff0c;针对测试链进行自测开发&#xff0c;准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址&#xff0c;我们不需要在线进行创建&#xff0c;直接可以通过第一节的离…

Java线程锁之Lock的使用

Lock 的使用 Lock 是java 1.5 中引入的线程同步工具&#xff0c;它主要用于多线程下共享资源的控制。本质上Lock 仅仅是一个接口&#xff0c; 可以通过显式定义同步锁对象来实现同步&#xff0c;能够提供比synchronized 更广泛的锁定操作&#xff0c;并支持多个相关的 Lock接…