QT中封装的IP地址的widgetCWord文档格式.docx
《QT中封装的IP地址的widgetCWord文档格式.docx》由会员分享,可在线阅读,更多相关《QT中封装的IP地址的widgetCWord文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
classQWidget;
classQFocusEvent;
classQKeyEvent;
classMyIpPartLineEdit:
publicQLineEdit
{
Q_OBJECT
public:
MyIpPartLineEdit(QWidget*parent=0);
~MyIpPartLineEdit(void);
voidset_nexttab_edit(QLineEdit*nexttab){next_tab_=nexttab;
}protected:
virtualvoidfocusInEvent(QFocusEvent*e);
virtualvoidkeyPressEvent(QKeyEvent*event);
privateslots:
voidtext_edited(constQString&
amp;
text);
private:
QLineEdit*next_tab_;
};
//MyIpPartLineEdit.cpp
#include"
MyIpPartLineEdit.h"
#include&
QIntValidator&
QKeyEvent&
MyIpPartLineEdit:
:
MyIpPartLineEdit(QWidget*parent/*=0*/)
QLineEdit(parent)
next_tab_=NULL;
this-&
setMaxLength(3);
setFrame(false);
setAlignment(Qt:
AlignCenter);
QValidator*validator=newQIntValidator(0,255,this);
setValidator(validator);
connect(this,SIGNAL(textEdited(constQString&
)),this,SLOT(text_edited(constQString&
)));
}MyIpPartLineEdit:
~MyIpPartLineEdit(void)
}voidMyIpPartLineEdit:
focusInEvent(QFocusEvent*e)
selectAll();
QLineEdit:
focusInEvent(e);
keyPressEvent(QKeyEvent*event)
if(event-&
key()==Qt:
Key_Period)
{
if(next_tab_)
next_tab_-&
setFocus();
}
keyPressEvent(event);
text_edited(constQString&
text)
QIntValidatorv(0,255,this);
QStringipaddr=text;
intpos=0;
QValidator:
Statestate=v.validate(ipaddr,pos);
if(state==QValidator:
Acceptable)
if(ipaddr.size()&
1)
if(ipaddr.size()==2)
intipnum=ipaddr.toInt();
if(ipnum&
25)
}
else
}
MyIpAddrEdit.h
QWidget&
classQLineEdit;
classQLabel;
classMyIpPartLineEdit;
classMyIpAddrEdit:
publicQWidget
MyIpAddrEdit(QWidget*pParent=0);
~MyIpAddrEdit();
voidsettext(constQString&
text);
QStringtext();
voidsetStyleSheet(constQString&
styleSheet);
signals:
voidtextchanged(constQString&
voidtextedited(constQString&
privateslots:
voidtextchangedslot(constQString&
voidtexteditedslot(constQString&
MyIpPartLineEdit*ip_part1_;
MyIpPartLineEdit*ip_part2_;
MyIpPartLineEdit*ip_part3_;
QLineEdit*ip_part4_;
QLabel*labeldot1_;
QLabel*labeldot2_;
QLabel*labeldot3_;
//MyIpAddrEdit.cpp
MyIpAddrEdit.h"
QRegExpValidator&
QLabel&
MyIpAddrEdit:
MyIpAddrEdit(QWidget*pParent/*=0*/)
QWidget(pParent)
ip_part1_=newMyIpPartLineEdit(this);
ip_part2_=newMyIpPartLineEdit(this);
ip_part3_=newMyIpPartLineEdit(this);
ip_part4_=newMyIpPartLineEdit(this);
labeldot1_=newQLabel(this);
labeldot2_=newQLabel(this);
labeldot3_=newQLabel(this);
ip_part1_-&
setGeometry(QRect(0,0,30,20));
ip_part2_-&
setGeometry(QRect(30,0,30,20));
ip_part3_-&
setGeometry(QRect(60,0,30,20));
ip_part4_-&
setGeometry(QRect(90,0,30,20));
labeldot1_-&
setText("
."
setGeometry(QRect(27,1,6,18));
labeldot2_-&
setGeometry(QRect(57,1,6,18));
labeldot3_-&
setGeometry(QRect(87,1,6,18));
QWidget:
setTabOrder(ip_part1_,ip_part2_);
setTabOrder(ip_part2_,ip_part3_);
setTabOrder(ip_part3_,ip_part4_);
set_nexttab_edit(ip_part2_);
set_nexttab_edit(ip_part3_);
set_nexttab_edit(ip_part4_);
connect(ip_part1_,SIGNAL(textChanged(constQString&
)),this,SLOT(textchangedslot(constQString&
connect(ip_part2_,SIGNAL(textChanged(constQString&
connect(ip_part3_,SIGNAL(textChanged(constQString&
connect(ip_part4_,SIGNAL(textChanged(constQString&
connect(ip_part1_,SIGNAL(textEdited(constQString&
)),this,SLOT(texteditedslot(constQString&
connect(ip_part2_,SIGNAL(textEdited(constQString&
connect(ip_part3_,SIGNAL(textEdited(constQString&
connect(ip_part4_,SIGNAL(textEdited(constQString&
}MyIpAddrEdit:
~MyIpAddrEdit()
{}voidMyIpAddrEdit:
textchangedslot(constQString&
/*text*/)
QStringippart1,ippart2,ippart3,ippart4;
ippart1=ip_part1_-&
text();
ippart2=ip_part2_-&
ippart3=ip_part3_-&
ippart4=ip_part4_-&
QStringipaddr=QString("
%1.%2.%3.%4"
)
.arg(ippart1)
.arg(ippart2)
.arg(ippart3)
.arg(ippart4);
emittextchanged(ipaddr);
}voidMyIpAddrEdit:
texteditedslot(constQString&
/*text*/)
emittextedited(ipaddr);
settext(constQString&
text)
QStringqstring_validate=text;
//IP地址验证
QRegExpregexp("
QRegExpValidatorregexp_validator(regexp,this);
intnPos=0;
Statestate=regexp_validator.validate(qstring_validate,nPos);
//IP合法
QStringListippartlist=text.split("
."
intstrcount=ippartlist.size();
intindex=0;
if(index&
strcount)
ippart1=ippartlist.at(index);
if(++index&
ippart2=ippartlist.at(index);
ippart3=ippartlist.at(index);
ippart4=ippartlist.at(index);
}ip_part1_-&
setText(ippart1);
setText(ippart2);
setText(ippart3);
setText(ippart4);
}QStringMyIpAddrEdit:
text()
returnQString("
setStyleSheet(constQString&
styleSheet)
setStyleSheet(styleSheet);
下面是调用方法
QApplication&
QDialog&
intmain(intargc,char*argv[])
QApplicationapp(argc,argv);
QDialog*my_dialog=newQDialog;
MyIpAddrEdit*ipAddr=newMyIpAddrEdit(my_dialog);
ipAddr-&
settext("
127.0.0.1"
my_dialog-&
show();
returnapp.exec();