qt沒有提供乙個完整的ip位址控制項,
1. 可以使用qlineedit簡單的實現
qregexp regexp(
"((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.)(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)
");
qregexpvalidator
*pvalidator
=new
qregexpvalidator(regexp,
this
); qlineedit
*lineedit
=new
qlineedit(
this
); lineedit
->
setvalidator(
newqregexpvalidator(pvalidator,
this
));
lineedit
->
setinputmask(
"000.000.000.000;");
但是上面的輸入時沒有window的ip位址控制項好用。所以自己就用4個qlineedit封裝了乙個,用起來好多了,
下面是**: //
myippartlineedit.h
#pragma once
#include
<
qlineedit
>
class
qwidget;
class
qfocusevent;
class
qkeyevent;
class
myippartlineedit :
public
qlineedit
protected
: virtual
void
focusinevent(qfocusevent
*e);
virtual
void
keypressevent(qkeyevent
*event
);
private
slots:
void
text_edited(
const
qstring
&text);
private
: qlineedit
*next_tab_;
};
#include
"myippartlineedit.h
"#include
<
qintvalidator
>
#include
<
qkeyevent
>
myippartlineedit::myippartlineedit(qwidget
*parent
/*= 0
*/)
: qlineedit(parent)
myippartlineedit::
~myippartlineedit(
void)
void
myippartlineedit::focusinevent(qfocusevent
*e)
void
myippartlineedit::keypressevent(qkeyevent
*event)
} qlineedit::keypressevent(
event
); }
void
myippartlineedit::text_edited(
const
qstring
&text)
} }
else
} } } }
#pragma once
#include
<
qwidget
>
class
qlineedit;
class
qlabel;
class
myippartlineedit;
class
myipaddredit :
public
qwidget ;
//myipaddredit.cpp
#include
"myipaddredit.h
"#include
<
qregexpvalidator
>
#include
<
qlabel
>
#include
"myippartlineedit.h
"myipaddredit::myipaddredit(qwidget
*pparent
/*= 0
*/)
: qwidget(pparent)
myipaddredit::
~myipaddredit()
void
myipaddredit::textchangedslot(
const
qstring&/*
text
*/)
void
myipaddredit::texteditedslot(
const
qstring &/*
text
*/)
void
myipaddredit::settext(
const
qstring
&text)
(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)
");
qregexpvalidator regexp_validator(regexp,
this
); int
npos =0
; qvalidator::state state
=regexp_validator.validate(qstring_validate, npos);
//ip合法
if(state
==qvalidator::acceptable) if
(++index
<
strcount) if
(++index
<
strcount) if
(++index
<
strcount) }
ip_part1_
->
settext(ippart1);
ip_part2_
->
settext(ippart2);
ip_part3_
->
settext(ippart3);
ip_part4_
->
settext(ippart4);
} qstring myipaddredit::text()
void
myipaddredit::setstylesheet(
const
qstring
&stylesheet)
myipaddredit *ipaddr = new myipaddredit();
ipaddr->settext("127.0.0.1");
ipaddr->show();
c 中封裝的介紹
封裝就是將物件執行所需要的資源封裝在程式物件中,並給外界公布介面,這樣很複雜的邏輯經過包裝之後給其他類使用就很方便,其他類不需要關心你裡邊的功能是以哪種方式實現的,只要傳入需要的引數就可以得到想要的結果。例如 我們要看電視,只需要按一下開關和換台就可以了,有必要了解電視機內部的結構嘛?製造商為了我們...
Qt獲取本機的ip位址 MAC位址
qstring gethostipaddress 如果沒有找到,則以本地ip位址為ip if stripaddress.isempty stripaddress qhostaddress qhostaddress localhost tostring return stripaddress qstr...
物件導向中 封裝的理解
封裝是保證軟體部件具有優良的模組性的基礎,封裝的目標就是要實現軟體部件的 高內聚 低耦合 防止程式相互依賴性而帶來的變動影響。在物件導向的程式語言中,物件是封裝 的最基本單位,物件導向的封裝比傳統語言的封裝更為清晰 更為有力。物件導向的封裝就 是把描述乙個物件的屬性和行為的 封裝在乙個 模組 中,也...