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下)相关推荐

  1. QT + OpenCV + MinGW 在windows下配置开发环境

           由于研究项目需要,最近开始接触C++界面设计,关于"QT + OpenCV + MinGW在windows下配置开发环境"着实让人头疼,单次配置时间相当长,也十分不容 ...

  2. Qt实现IP输入框(模仿Windows系统中的IP输入框)

    本文章所用的代码整理自https://blog.csdn.net/u011417605/article/details/51353337,感谢原作者分享 本代码在上述作者代码基础上做了如下修改: (1 ...

  3. 适用于树莓派Raspberry Pi的嵌入式QT平台(二) -- 在Windows下用Qt Creator开发编译Raspberry Qt 5应用程序...

    接着上篇 "交叉编译安装Qt Embedded 5.5",我们已经成功在Windows上交叉编译了Raspberry Pi的嵌入式Qt 5.5.那么我们就可以开始开发基于Qt 5的 ...

  4. android设计ip输入框,Android下自定义IP控件

    在Android原生控件中,没有IP输入控件,于是自定义一个,如果有bug或者代码上的问题,欢迎大家提出,先谢谢大家. 控件代码如下: import android.content.Context; ...

  5. QT自定义控件--键盘输入框

    一.效果展示 二.原理详解 这个键盘不是标准的键盘,而是个人项目中定制化的键盘控件,这个控件属于组合控件,不是通过QPinter绘制的,而是通过Qt自带的类相互结合自定义的控件.键盘采用QPushBu ...

  6. linux的qt中出现error2,Windows下Qt代码出现的错误总结

    1:Use multi-arg instead [不要使用一连串的 arg().arg().arg() 了] QString("%1 %2").arg(a).arg(b); // ...

  7. windows下如何查看本机所在局域网内所有可以访问的IP

    windows下如何查看本机所在局域网内所有可以访问的IP 胡说八道 windows下如何查看本机所在局域网内所有可以访问的IP 方法一: 方法二: 方法三: 查看同一个局域网内电脑IP的方法 胡说八 ...

  8. Windows下查看域名解析的IP

    Windows下查看域名解析的IP Windows下查看域名解析的IP nslookup Windows下查看域名解析的IP nslookup 示例:nslookup www.baidu.com 结果 ...

  9. windows下socket编程GetLastError()函数返回结果与对照表-转

    原文地址:http://blog.sina.com.cn/s/blog_4880c4bb0100b6a5.html WSAGetLastError()函数返回结果与对照表: Windows Socke ...

  10. Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法

    vivado2020.1 HLS生成的IP在Windows下报错 Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法 我的解决方法: 编译过程如下 之后重新对工程 ...

最新文章

  1. 依赖包 全局_composer 更新指定的依赖包
  2. 电子书下载:Building Websites with DotNetNuke 5
  3. 诗歌rails之 method_missing
  4. java 反射 Gc_深入浅析Java反射机制
  5. storyboard 如何用代码调用
  6. 高斯投影正反算C语言程序代码,高斯投影正反算-对网络上面流行的C代码的修改(已正确运行)...
  7. linux callback函数,C++回调函数(callback)的使用
  8. c++起始(名词修饰,extern “C” ,引用)
  9. 基本数据结构 - 栈和队列
  10. 使用Google App Engine开始新的网站开发学习
  11. 每日英语:6 Brainy Habits of the Wisest People
  12. 【转】requests、BeautifulSoup使用总结
  13. python可以爬wind的数据_Python:爬取上市公司公告-Wind-CSMAR
  14. 工商数据采集的10个经典方法
  15. 如何一天深度睡眠4个小时
  16. 更换APP启动图标和名称
  17. 仿58同城的伪静态写法
  18. java项目-第137期jsp+servlet的周公算命预测系统-java毕业设计
  19. [LeetCode]122. Best Time to Buy and Sell Stock II
  20. 左右手坐标系和相关定则的总结

热门文章

  1. 最长回文子串问题求解
  2. mac与windows下各自的md5、sha1、sha256命令行校验工具
  3. 自媒体人必看的几个文案网站,让文案创作更有色
  4. 画春天的景色计算机教案,中班美术教案《画春天》
  5. 生命游戏和随机数之间某种不可言说的秘密
  6. pyhton爬取爱豆(李易峰)微博评论
  7. 公交系统java程序设计,基于JAVA的JSP城市公交查询系统,源码分享
  8. Google又逆天:语音输入离线实时输出文字,仅占80MB!然而……
  9. MT7601 无线wifi网卡驱动移植
  10. python 舆情系统