###############################################################################

#操作系统:Win7垃圾版
#QT: 4.8.1                  

#Write By Kinglate 20130805

###############################################################################

1.新建一个QT工程,基类随便即可,本人的是基于MainWindow。建完之后,将Qt4工程中的* .pro中的第一句QT+= core gui改为“QT+= core guinetwork

2.*.h文件中包含头文件:#include <QtNetwork>

3.第一步建好界面,在*.ui中添加一个Label文本信息为“本地IP:”然后再添加一个Line Edit并将属性名改为“localIpEdit”即可。

131346134.png

4..接着开始着手写一个获取本机Ip的程序。

5.就写一个返回QString类型的函数来完成这个功能吧!函数名为getIp()

首先在*.h中申明一个QString常量和一个QString型函数。

*.h找到public:在其下面写好这两行代码:

   QString localIpStr;

QString getIp();

6.接下来到*.cpp(非main.cpp)中实现这个功能。

在构造函数中写好下面两行代码:

localIpStr = getIp();

ui->localIpEdit->setText(localIpStr);

131412552.png

7.以下为实现getIp()/函数!

QString MainWindow::getIp()//获取本机IP的函数

{

   QString myipv4Address;

   #ifdef _WIN32

   QHostInfo vHostInfo = QHostInfo::fromName(QHostInfo::localHostName());

   QList<QHostAddress> vAddressList = vHostInfo.addresses();

   #else

   QList<QHostAddress> vAddressList = QNetworkInterface::allAddresses();

   #endif

       for(int i = 0; i < vAddressList.size(); i++)

          {

            if(!vAddressList.at(i).isNull() &&

                 vAddressList.at(i) != QHostAddress::LocalHost &&

                 vAddressList.at(i).protocol() ==  QAbstractSocket::IPv4Protocol)

                  {

                     myipv4Address = vAddressList.at(i).toString();

                     break;

                  }

          }

   return myipv4Address;

}

8.最后编译执行即可!显示结果如下图所示:

131435478.png

附件上包含整个工程。