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和设备
优质生活从拆开始