qt显示rgba8888 如何改 frame_Qt开源作品17-IP地址输入控件

4332eea1e2c15dc86b35da2b68658803.gif

一、前言

这个IP地址输入框控件,估计写烂了,网上随便一搜索,保证一大堆,估计也是因为这个控件太容易了,非常适合新手练手,一般的思路都是用4个qlineedit控件拼起来,然后每个输入框设置正则表达式过滤只能输入3位数字,然后安装事件过滤器识别回车自动跳到下一个输入框。关于如何设置正则表达式过滤,这个可以搜索查到,本人也不大懂这个规则,貌似还有专门的书籍专门介绍正则表达式,可能这块非常强大。

主要功能:

1. 可设置IP地址,自动填入框

2. 可清空IP地址

3. 支持按下小圆点自动切换

4. 支持退格键自动切换

5. 支持IP地址过滤

6. 可设置背景色/边框颜色/边框圆角角度

二、代码思路

IPAddress::IPAddress(QWidget *parent) : QWidget(parent)
{bgColor = "#FFFFFF";borderColor = "#A6B5B8";borderRadius = 3;//用于显示小圆点的标签,居中对齐labDot1 = new QLabel;labDot1->setAlignment(Qt::AlignCenter);labDot1->setText(".");labDot2 = new QLabel;labDot2->setAlignment(Qt::AlignCenter);labDot2->setText(".");labDot3 = new QLabel;labDot3->setAlignment(Qt::AlignCenter);labDot3->setText(".");//用于输入IP地址的文本框,居中对齐txtIP1 = new QLineEdit;txtIP1->setObjectName("txtIP1");txtIP1->setAlignment(Qt::AlignCenter);txtIP1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);connect(txtIP1, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));txtIP2 = new QLineEdit;txtIP2->setObjectName("txtIP2");txtIP2->setAlignment(Qt::AlignCenter);txtIP2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);connect(txtIP2, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));txtIP3 = new QLineEdit;txtIP3->setObjectName("txtIP3");txtIP3->setAlignment(Qt::AlignCenter);txtIP3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);connect(txtIP3, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));txtIP4 = new QLineEdit;txtIP4->setObjectName("txtIP4");txtIP4->setAlignment(Qt::AlignCenter);txtIP4->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);connect(txtIP4, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));//设置IP地址校验过滤QRegExp regExp("(2[0-5]{2}|2[0-4][0-9]|1?[0-9]{1,2})");QRegExpValidator *validator = new QRegExpValidator(regExp, this);txtIP1->setValidator(validator);txtIP2->setValidator(validator);txtIP3->setValidator(validator);txtIP4->setValidator(validator);//绑定事件过滤器,识别键盘按下txtIP1->installEventFilter(this);txtIP2->installEventFilter(this);txtIP3->installEventFilter(this);txtIP4->installEventFilter(this);QFrame *frame = new QFrame;frame->setObjectName("frameIP");QStringList qss;qss.append(QString("QFrame#frameIP{border:1px solid %1;border-radius:%2px;}").arg(borderColor).arg(borderRadius));qss.append(QString("QLabel{min-width:15px;background-color:%1;}").arg(bgColor));qss.append(QString("QLineEdit{background-color:%1;border:none;}").arg(bgColor));qss.append(QString("QLineEdit#txtIP1{border-top-left-radius:%1px;border-bottom-left-radius:%1px;}").arg(borderRadius));qss.append(QString("QLineEdit#txtIP4{border-top-right-radius:%1px;border-bottom-right-radius:%1px;}").arg(borderRadius));frame->setStyleSheet(qss.join(""));QVBoxLayout *verticalLayout = new QVBoxLayout(this);verticalLayout->setMargin(0);verticalLayout->setSpacing(0);verticalLayout->addWidget(frame);//将控件按照横向布局排列QHBoxLayout *layout = new QHBoxLayout(frame);layout->setMargin(0);layout->setSpacing(0);layout->addWidget(txtIP1);layout->addWidget(labDot1);layout->addWidget(txtIP2);layout->addWidget(labDot2);layout->addWidget(txtIP3);layout->addWidget(labDot3);layout->addWidget(txtIP4);
}bool IPAddress::eventFilter(QObject *watched, QEvent *event)
{if (event->type() == QEvent::KeyPress) {QLineEdit *txt = (QLineEdit *)watched;if (txt == txtIP1 || txt == txtIP2 || txt == txtIP3 || txt == txtIP4) {QKeyEvent *key = (QKeyEvent *)event;//如果当前按下了小数点则移动焦点到下一个输入框if (key->text() == ".") {this->focusNextChild();}//如果按下了退格键并且当前文本框已经没有了内容则焦点往前移if (key->key() == Qt::Key_Backspace) {if (txt->text().length() <= 1) {this->focusNextPrevChild(false);}}}}return QWidget::eventFilter(watched, event);
}

三、效果图

344cc941b1b691cecef92d7919d9a89a.gif

四、开源主页

以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。 1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo 2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo 3. 个人主页:https://blog.csdn.net/feiyangqingyun 4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

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

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

相关文章

web.xml文件头出错

原先将web.xml文件头设置为如下格式 <?xml version"1.0" encoding"UTF-8"?><web-app version"3.1" xmlns"http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:sche…

Nature子刊超越诺贝尔经典理论:神经科学研究路漫漫...

科学家正在观察一台用于记录小鼠脑细胞活动的双光子显微镜。图片来源&#xff1a;艾伦研究所来源&#xff1a;中国生物技术网 北京时间12月17日&#xff0c;发表在《Nature Neuroscience》上一项针对小鼠视觉系统中近6万个神经元活动的新研究显示&#xff0c;要想了解大脑如何计…

偏见与人类大脑结构有关

来源&#xff1a;科技日报偏见是如何产生的&#xff1f;据英国《自然神经科学》16日发表的一项脑科学研究发现&#xff0c;内侧前额叶皮质后部&#xff08;pMFC&#xff09;会促进人类产生确认偏误。具体而言&#xff0c;对于那些不会让自己更加相信已有观念的意见&#xff0c;…

PLECS软件学习使用(一)简单的RLC电路搭建

PLECS软件学习使用&#xff08;一&#xff09;简单的RLC电路搭建 1相关操作总结&#xff1a; 旋转&#xff1a;CtrlR 翻转&#xff1a;CtrlF 从连线中引出线&#xff1a;Ctrl鼠标左键 设置元件参数&#xff1a;双击元件&#xff0c;进行设置&#xff0c;若要显示参数&#xff0…

《自然》公布年度十大杰出论文

来源&#xff1a;科技日报 英国《自然》杂志网站日前公布了2019年十大杰出论文&#xff0c;接近室温的超导体、精确编辑基因技术、海王星新卫星等纷纷入选。其中&#xff0c;中国研究占到两席&#xff0c;分别是来自复旦大学的亨廷顿舞蹈症新疗法&#xff0c;与中科院上海有机化…

中国电子信息工程科技发展十大趋势(2019)发布

来源&#xff1a;新浪科技17日&#xff0c;中国工程院信息与电子学部、中国信息与电子工程科技发展战略研究中心在中国工程院召开发布会&#xff0c;发布“中国电子信息工程科技发展十大趋势&#xff08;2019&#xff09;”。中国工程院副院长陈左宁院士表示&#xff0c;中国工…

Android junit单元测试

1.首先要把下面配置好&#xff08;注释的地方 Android studio 无需配置&#xff09;&#xff0c;targetPackage项目的包名 2.创建Android项目会自动生成test包&#xff0c;只能在test包下使用junit测试 3.在方法的前面加上Test就可以使用junit了 4.解释一下&#xff1a; assert…

21世纪20年代改变世界的十大趋势

来源&#xff1a;美国银行美国银行发布了新报告“21世纪20年代改变世界的十大趋势”。全球化高峰&#xff1a;世界范围内劳力、货物和资本自由流动将终结。在这种趋势下&#xff0c;赢家是本地市场和实物资产&#xff0c;而输家则是全球市场。衰退&#xff1a;更多的FMS投资者认…

多个if用什么设计模式_抽丝剥茧——单例设计模式

单例设计模式兄弟们好&#xff0c;今天是最后一个设计模式了&#xff0c;也是我们最熟悉的单例设计模式&#xff0c;可以说这个设计模式是我们最先接触到的设计模式了。想当年学习JavaSE的时候&#xff0c;老师聊到一个「饿汉式和懒汉式」&#xff0c;我还纠结了半天&#xff0…

计算机密码行业专题研究:网络安全最大弹性领域

来源&#xff1a;未来智库报告摘要&#xff1a;1、传统市场:政策驱动&#xff0c;预计传统密码增长中枢提升至30%密码是网络安全刚需&#xff0c;密码法2020年1月1日实施。政策驱动客户下沉&#xff0c;行业中期增速从10%提升至30%。2、新兴市场:物联网安全的基石&#xff0c;未…

人工智能军事对抗技术发展趋势

来源&#xff1a;战略前沿技术人工智能军事对抗技术人工智能&#xff08;AI&#xff09;作为新一代科技革命的典型代表性技术&#xff0c;目前已在世界各国的工业、金融、娱乐和公共安全等领域广泛应用&#xff0c;而其在军事领域的应用也正在快速发展。随着人工智能技术与军事…

java语言计算器怎么写_求助,一个计算器的括号功能怎么写啊。

求助&#xff0c;一个计算器的括号功能怎么写啊。import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class computer1 extends JFrame implements ActionListener{Double r1,r2,total,c1,c2;int i,j,j110,j27,c;JButton[] Bu…

windows打开的winform当前焦点 是否是hwnd_推介几款 windows 下非常好用的工具

在下工具控一枚&#xff0c;平时会留意收集各种各样给我们生活生产带来便捷的工具&#xff0c;毕竟人生苦短&#xff1b;下面主要介绍一些我在 Windows 系统上发现的一些好用的工具&#xff0c;并且会一笔带过主要优点特点&#xff0c;具体详细用法可以搜一下&#xff0c;相关帖…

借力5G,云VR将推动VR产业迎“第二春”

来源&#xff1a;VR每日必看在近期举办的第八届全球物联网峰会上&#xff0c;作为中国电信5G商用产品的集约运营单位&#xff0c;号百控股在会展区域设置了天翼云VR产品专区&#xff0c;演示了韩国LG U独家授权内容&#xff0c;以及自制VR视频&#xff0c;引入关注。VR云化将实…

Linq的优点以及注意事项

转载于:https://www.cnblogs.com/hubbert123/p/6429926.html

低调!中国北斗核心卫星部署完成,开启“全球时代”!超越GPS指日可待

来源&#xff1a;科技杂谈、百度物联网智库 整理发布导 读2019年12月16日15时22分&#xff0c;我国在西昌卫星发射中心用长征三号乙运载火箭&#xff08;及配套远征一号上面级&#xff09;&#xff0c;以“一箭双星”的方式成功将第52、53颗北斗导航卫星发射升空。至此&#x…

数字孪生白皮书(2019)

▲ 赛迪工业互联网首席研究员袁晓庆博士发布报告来源&#xff1a;赛迪智库以下是白皮书主要内容的PPT&#xff1a;&#xff08;点击放大观看&#xff09;123456789101112131415161718192021222324252627282930未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&…

java手动线程池使用_Java手动配置线程池过程详解

线程池中&#xff0c;常见有涉及到的&#xff1a;ExecutorService executorService Executors.newSingleThreadExecutor();ExecutorService executorService1 Executors.newCachedThreadPool();ExecutorService executorService2 Executors.newFixedThreadPool(3);关于Execu…

BZOJ 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]

传送门 题意&#xff1a;不想写... 扔链接就跑 好吧我回来了 首先发现每次兑换一定是全部兑换&#xff0c;因为你兑换说明有利可图&#xff0c;是为了后面的某一天两种卷的汇率差别明显而兑换 那么一定拿全利啊&#xff0c;一定比多天的组合好 $f[i]$表示第$i$天最多能得到的钱…

集水井盖板图集07fj02_【干货】住宅通病详细图集(图文详解)

工序节点1建筑物外墙与散水坡、台阶、明沟留沉降缝图示&#xff1a;要求与做法&#xff1a;1、散水坡、台阶、明沟本身按≤6m长度(总长度均分)留沉降缝。2、外墙阴阳角位按450角留沉降缝。3、散水坡与台阶交接处留沉降缝分隔。工序节点2室外地面 伸缩缝图示&#xff1a;要求与…