考虑到之前的那一个安装可能实现上有点复杂,也不知道你愿不愿意看。
所以,这里就实现一个简单的。
对了,考虑到我垃圾般的程序员审美,所以,如果觉得不好看的话,后期可以自己尝试看看能不能挑一下颜色,图片等一系列操作的。
开发环境:
VS2017 + QT
由于开发环境的原因导致的不一致问题:
这里的话,创建项目的方式也是非常简单。
我这的项目名字是: QtGuiApplicationTest
所以,在创建的文件当中,我会需要修改两个文件。
QtGuiApplicationTest.h
QtGuiApplicationTest.cpp
QtGuiApplicationTest.h
#pragma once #pragma execution_character_set("utf-8") #include <QtWidgets/QMainWindow> #include "ui_QtGuiApplicationTest.h" #include <qlabel.h> #include <qpushbutton.h> #include <qgridlayout.h> #include <qlineedit.h> #include <qmessagebox.h> #include <QtNetwork\qhostinfo.h> #include <QtNetwork\qnetworkinterface.h> class QtGuiApplicationTest : public QMainWindow { Q_OBJECT public: QtGuiApplicationTest(QWidget *parent = Q_NULLPTR); void getHostInformation(); public slots: void slotDetail(); private: Ui::QtGuiApplicationTestClass ui; QLabel *hostLable; QLineEdit *LineEditLocalHostName; QLabel *ipLabel; QLineEdit *LineEditAddress; QPushButton * detailBtn; QGridLayout *mainLayout; };
QtGuiApplicationTest.cpp
#include "QtGuiApplicationTest.h" QtGuiApplicationTest::QtGuiApplicationTest(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); hostLable = new QLabel(tr("主机名:")); LineEditLocalHostName = new QLineEdit; ipLabel = new QLabel(tr("IP 地址:")); LineEditAddress = new QLineEdit; detailBtn = new QPushButton(tr("详细")); mainLayout = new QGridLayout(ui.centralWidget); mainLayout->addWidget(hostLable, 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())); } void QtGuiApplicationTest::getHostInformation() { QString localHostName = QHostInfo::localHostName(); LineEditLocalHostName->setText(localHostName); QList<QNetworkInterface> list = QNetworkInterface::allInterfaces(); int templen = 0; QString ip = ""; for (int i = 0; i < list.count(); ++i) { QNetworkInterface interface = list.at(i); QList<QNetworkAddressEntry> entryList = interface.addressEntries(); if (entryList.count() < templen) continue; ip = entryList.at(entryList.count()-1).ip().toString(); templen = entryList.count(); } LineEditAddress->setText(ip); } void QtGuiApplicationTest::slotDetail() { QString detail = "", tempdetail=""; QList<QNetworkInterface> list = QNetworkInterface::allInterfaces(); int templen = 0; for (int i = 0; i < list.count(); ++i) { QNetworkInterface interface = list.at(i); QList<QNetworkAddressEntry> entryList = interface.addressEntries(); if (entryList.count() < templen) continue; tempdetail = tr("设备:") + interface.name() + "\n"; tempdetail = tempdetail + tr("硬件地址:") + interface.hardwareAddress() + "\n"; for (int j = 0; j < entryList.count(); ++j) { QNetworkAddressEntry entry = entryList.at(j); tempdetail = tempdetail + " " + tr("IP 地址:") + entry.ip().toString() + "\n"; tempdetail = tempdetail + " " + tr("子网掩码:") + entry.netmask().toString() + "\n"; tempdetail = tempdetail + " " + tr("广播地址:") + entry.broadcast().toString() + "\n"; } detail = tempdetail; templen = entryList.count(); } QMessageBox::information(this, tr("Detail"), detail); }
还需要把 Qt5Networkd.lib
这个库添加到项目的链接器中的附加依赖项。
就把上面这个东西,复制上去就好了。(只是名字,它会自己找的。。)