Qt自定义控件(IP输入框,windows下)
1.建立自定义控件项目
组代表后来能从哪里找到
剩下的点“下一步”就行了
2.编辑代码
在生成项目的cpp中添加自己的内容(没有.ui界面了,设计tab是灰色的)
放一下我的代码
3.构建
(注意,因为没有main函数和主程序,所以无法运行,构建出动态库就是目的)
IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255)
另外的知识:计算机网络基础(五)---网络层-IP地址的子网划分 - 知乎 (zhihu.com)
所以我进行分割,对每个进行判断来简化判断,放出代码
以下是 ipinput.h
#ifndef IPINPUT_H
#define IPINPUT_H#include <QWidget>
#include <QLineEdit>class IPinput : public QWidget
{Q_OBJECT
public:IPinput(QWidget *parent = 0);QString GetIP();
private slots:void Judge(QString str);
private:QLineEdit *m_lineEdit;QString previousIP;
};#endif
以下是 ipinput.cpp
#include "ipinput.h"
#include <QRegExp>
#include <QRegExpValidator>IPinput::IPinput(QWidget *parent) :QWidget(parent)
{m_lineEdit = new QLineEdit(this);connect( m_lineEdit,SIGNAL(textChanged(QString)) ,this,SLOT(Judge(QString)) );//正则限制只能写数字和符号.QRegExp regExp = QRegExp("[0-9\\.]*");//只能输入数字和小数点m_lineEdit->setValidator(new QRegExpValidator(regExp, m_lineEdit));
}void IPinput::Judge(QString str)
{QStringList a = str.split(".");//分割每个小ipif(a.size()>4){m_lineEdit->setText(previousIP);//还原return;}for(int i=0;i<a.size();i++){QString temp = a.at(i);//多个0if(0==temp.toInt()&&temp.count('0')>1){m_lineEdit->setText(previousIP);//还原return;}//超范围了if(0>temp.toInt()||255<temp.toInt()){m_lineEdit->setText(previousIP);//还原return;}//都大于0了第一位还是0if(0<temp.toInt()&&temp.left(1)=="0"){m_lineEdit->setText(previousIP);//还原return;}}previousIP = str;//合格,设定为当前字符串
}//对外用,获取ip
QString IPinput::GetIP(){QRegExp regExp("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[\\.]){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])");//不合法返回-1if( regExp.exactMatch(previousIP) )return previousIP;elsereturn "-1";
}
以release模式编译构建
找到生成目录,在你的编译目录下,会有dll文件和lib(MinGW编译的是.a文件)
找到动态库,把动态库,也就是图上的.dll(windows的)文件
拷贝到如下2个目录:
1.Qt的安装目录【我的是 C:\Qt\Qt5.7.0\5.7\mingw53_32\plugins\designer\】
2.Qt Creator的安装目录【我的是 C:\Qt\qtcreator-4.4.1\bin\plugins\designer\】
---然后好像是我生成的.a文件不被Qt Creator用MSVC所兼容,失败了!
4.引用
将生成并安装的.so 文件复制到qt creator的安装目录bin/designer 中这样再次打开 qt creator就可以在designer窗口中看到自定义的控件了。可以想使用别的qt自带的控件一样使用它。
将 编写自定义控件中所编写的.h .cpp .pri文件拷贝到使用该控件的项目的目录下。
在使用该控件的项目的.pro文件中加入include (***.pri)就可以编译运行了。
参考资料:
QT自定义控件(生成和使用) - OSJ - OSCHINA - 中文开源技术交流社区
利用QT制作自定义控件_yanchong_RD的专栏-CSDN博客
Qt添加自定义控件_逐梦的博客-CSDN博客_qt自定义控件
Qt自定义控件(IP输入框,windows下)相关推荐
- QT + OpenCV + MinGW 在windows下配置开发环境
由于研究项目需要,最近开始接触C++界面设计,关于"QT + OpenCV + MinGW在windows下配置开发环境"着实让人头疼,单次配置时间相当长,也十分不容 ...
- Qt实现IP输入框(模仿Windows系统中的IP输入框)
本文章所用的代码整理自https://blog.csdn.net/u011417605/article/details/51353337,感谢原作者分享 本代码在上述作者代码基础上做了如下修改: (1 ...
- 适用于树莓派Raspberry Pi的嵌入式QT平台(二) -- 在Windows下用Qt Creator开发编译Raspberry Qt 5应用程序...
接着上篇 "交叉编译安装Qt Embedded 5.5",我们已经成功在Windows上交叉编译了Raspberry Pi的嵌入式Qt 5.5.那么我们就可以开始开发基于Qt 5的 ...
- android设计ip输入框,Android下自定义IP控件
在Android原生控件中,没有IP输入控件,于是自定义一个,如果有bug或者代码上的问题,欢迎大家提出,先谢谢大家. 控件代码如下: import android.content.Context; ...
- QT自定义控件--键盘输入框
一.效果展示 二.原理详解 这个键盘不是标准的键盘,而是个人项目中定制化的键盘控件,这个控件属于组合控件,不是通过QPinter绘制的,而是通过Qt自带的类相互结合自定义的控件.键盘采用QPushBu ...
- linux的qt中出现error2,Windows下Qt代码出现的错误总结
1:Use multi-arg instead [不要使用一连串的 arg().arg().arg() 了] QString("%1 %2").arg(a).arg(b); // ...
- windows下如何查看本机所在局域网内所有可以访问的IP
windows下如何查看本机所在局域网内所有可以访问的IP 胡说八道 windows下如何查看本机所在局域网内所有可以访问的IP 方法一: 方法二: 方法三: 查看同一个局域网内电脑IP的方法 胡说八 ...
- Windows下查看域名解析的IP
Windows下查看域名解析的IP Windows下查看域名解析的IP nslookup Windows下查看域名解析的IP nslookup 示例:nslookup www.baidu.com 结果 ...
- windows下socket编程GetLastError()函数返回结果与对照表-转
原文地址:http://blog.sina.com.cn/s/blog_4880c4bb0100b6a5.html WSAGetLastError()函数返回结果与对照表: Windows Socke ...
- Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法
vivado2020.1 HLS生成的IP在Windows下报错 Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法 我的解决方法: 编译过程如下 之后重新对工程 ...
最新文章
- 依赖包 全局_composer 更新指定的依赖包
- 电子书下载:Building Websites with DotNetNuke 5
- 诗歌rails之 method_missing
- java 反射 Gc_深入浅析Java反射机制
- storyboard 如何用代码调用
- 高斯投影正反算C语言程序代码,高斯投影正反算-对网络上面流行的C代码的修改(已正确运行)...
- linux callback函数,C++回调函数(callback)的使用
- c++起始(名词修饰,extern “C” ,引用)
- 基本数据结构 - 栈和队列
- 使用Google App Engine开始新的网站开发学习
- 每日英语:6 Brainy Habits of the Wisest People
- 【转】requests、BeautifulSoup使用总结
- python可以爬wind的数据_Python:爬取上市公司公告-Wind-CSMAR
- 工商数据采集的10个经典方法
- 如何一天深度睡眠4个小时
- 更换APP启动图标和名称
- 仿58同城的伪静态写法
- java项目-第137期jsp+servlet的周公算命预测系统-java毕业设计
- [LeetCode]122. Best Time to Buy and Sell Stock II
- 左右手坐标系和相关定则的总结