qt設置控件在布局的位置,Qt自定義控件(IP輸入框,windows下)
qt設置控件在布局的位置,Qt自定義控件(IP輸入框,windows下)
1.建立自定義控件項目
qt設置控件在布局的位置、
?組代表后來能從哪里找到
剩下的點“下一步”就行了
2.編輯代碼
在生成項目的cpp中添加自己的內容(沒有.ui界面了,設計tab是灰色的)?
qt獲取本機ip地址?
?放一下我的代碼
3.構建
(注意,因為沒有main函數和主程序,所以無法運行,構建出動態庫就是目的)
windows ip配置、IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255)
另外的知識:計算機網絡基礎(五)---網絡層-IP地址的子網劃分 - 知乎 (zhihu.com)
所以我進行分割,對每個進行判斷來簡化判斷,放出代碼
qt自定義控件,
以下是 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模式編譯構建
qt輸入框?找到生成目錄,在你的編譯目錄下,會有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自定義控件