Qt自定义控件(IP输入框,windows下)
1.建立自定义控件项目剩下的点“下一步”就行了2.编辑代码在生成项目的cpp中添加自己的内容(没有.ui界面了,设计tab是灰色的)放一下我的代码3.构建(注意,因为没有main函数和主程序,所以无法运行,构建出动态库就是目的)release模式编译gou'ji在编译后的运行目录下,用控制台命令运行make install这样他会默认的将控件安装到所在版本的plugin/designer中是一个.
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(".");//分割每个小ip
if(a.size()>4){
m_lineEdit->setText(previousIP);//还原
return;
}
for(int i=0;i<a.size();i++){
QString temp = a.at(i);
//多个0
if(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了第一位还是0
if(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])");
//不合法返回-1
if( regExp.exactMatch(previousIP) )
return previousIP;
else
return "-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 - 中文开源技术交流社区
更多推荐
所有评论(0)