QT:获取本机网络信息
使用qt的hostInfo类,查看本机的IP和设备;
开发环境: WIN10+ QT5.14
创建桌面应用程序继承 QWidget 类, NetworkInformation.pro 项目
NetworkInformation.pro 项目文件中添加 network 引用
QT += core gui network
networkinformation.h
#ifndef NETWORKINFORMATION_H
#define NETWORKINFORMATION_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QMessageBox>
// #include <QtNetwork/QNetworkInterface>
// #include <QtNetwork/QHostInfo>
// #include <QtNetwork>
#include <QNetworkInterface>
#include <QHostInfo>
#include <QNetworkAddressEntry>
class NetworkInformation : public QWidget
{
Q_OBJECT
public:
NetworkInformation(QWidget *parent = nullptr);
~NetworkInformation();
private:
QLabel *hostLabel;
QLineEdit *LineEditLocalHostName;
QLabel *ipLabel;
QLineEdit *LineEditAddress;
QPushButton *detailBtn;
QGridLayout *mainLayout;
public:
void getHostInformation();
public slots:
void slotDetail();
};
#endif // NETWORKINFORMATION_H
networkinformation.cpp
#include "networkinformation.h"
NetworkInformation::NetworkInformation(QWidget *parent)
: QWidget(parent)
{
hostLabel = new QLabel(tr("主机名:")) ;
LineEditLocalHostName = new QLineEdit;
ipLabel = new QLabel(tr("IP地址:"));
LineEditAddress = new QLineEdit;
detailBtn = new QPushButton(tr("详细"));
mainLayout = new QGridLayout(this);
mainLayout->addWidget(hostLabel,0,0);
mainLayout->addWidget(LineEditLocalHostName,0,1);
mainLayout->addWidget(ipLabel,1,0);
mainLayout->addWidget(LineEditAddress,1,1);
mainLayout->addWidget(detailBtn,2,0,1,2);
getHostInformation();
connect(detailBtn,SIGNAL(clicked()),this, SLOT(slotDetail()));
}
NetworkInformation::~NetworkInformation()
{
}
void NetworkInformation::getHostInformation()
{
QString localHostName = QHostInfo::localHostName();
LineEditLocalHostName->setText(localHostName);
QHostInfo hostInfo = QHostInfo::fromName(localHostName);
// 获取主机的IP地址列表
QList<QHostAddress> listAddress = hostInfo.addresses();
if(!listAddress.isEmpty())
{
QString ipList ="";
for(int i=0;i<listAddress.count();i++)
{
ipList =ipList + listAddress.at(i).toString() +" # ";
}
LineEditAddress->setText(listAddress.at(7).toString());
// LineEditAddress->setText(ipList);
// QMessageBox::information(this,tr("IP地址:"),ipList);
}
}
void NetworkInformation::slotDetail()
{
QString detail = "";
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
for(int i=0; i<list.count(); i++)
{
QNetworkInterface interface = list.at(i);
detail = detail +tr("设备:") + interface.name()+ "\n";
detail = detail +tr("硬件地址:") + interface.hardwareAddress()+ "\n";
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
for(int j=1; j<entryList.count();j++)
{
QNetworkAddressEntry entry = entryList.at(j);
detail = detail +"\t" +tr("IP地址:") + entry.ip().toString()+ "\n";
detail = detail +"\t" +tr("子网掩码:") + entry.netmask().toString()+ "\n";
detail = detail +"\t" +tr("广播地址:") + entry.broadcast().toString()+ "\n";
}
}
QMessageBox::information(this,tr("Detail"),detail);
}
效果图:

使用qt的hostInfo类,查看本机的IP和设备
优质生活从拆开始
浙公网安备 33010602011771号