Qt获取本地网络信息的实例
来源:互联网 发布:网络类购物号名字大全 编辑:程序博客网 时间:2024/04/30 14:21
获取本机网络信息主要涉及到Qt的QHostInfo类和QNetworkInterface类
在QtCreator中新建一个QtWidgetApplication,命名为“NetworkInfo”,继承自QWidget类,不需要自动生成ui文件。
networkinfo.h文件的具体代码如下:
#ifndef NETWORKINFO_H
#define NETWORKINFO_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QMessageBox>
#include <QHostInfo>
#include <QNetworkInterface>
class NetworkInfo : public QWidget
{
Q_OBJECT
public:
NetworkInfo(QWidget *parent = 0);
~NetworkInfo();
void getHostInfomation();
private:
QLabel *hostLabel;
QLineEdit *LineEditLocalHostName;
QLabel *ipLabel;
QLineEdit *LineEditAddress;
QPushButton *detailBtn;
QGridLayout *mainLayout;
public slots:
void slotDetail();
};
#endif // NetworkInfo_H
networkinfo.cpp的具体代码如下:
#include "networkinfo.h"
NetworkInfo::NetworkInfo(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);
getHostInfomation();
connect(detailBtn, SIGNAL(clicked()), this, SLOT(slotDetail()));
}
NetworkInfo::~NetworkInfo()
{
}
void NetworkInfo::getHostInfomation(){
QString localHostName = QHostInfo::localHostName();
LineEditLocalHostName->setText(localHostName);
QHostInfo hostInfo = QHostInfo::fromName(localHostName);
QList listAddress = hostInfo.addresses();
if(!listAddress.isEmpty())
{
LineEditAddress->setText(listAddress.first().toString());
}
}
void NetworkInfo::slotDetail()
{
QString detail = "";
QList list = QNetworkInterface::allInterfaces();
for(int i=0;i<list.count();i++)
{
QNetworkInterface ni = list.at(i);
detail = detail + tr("设备") + ni.name() + "\n";
detail = detail + tr("硬件地址:") + ni.hardwareAddress() + "\n";
QList entryList = ni.addressEntries();
for (int j = 0; j<entryList.count();j++)
{
QNetworkAddressEntry nae = entryList.at(j);
detail = detail + tr("IP地址:") + nae.ip().toString() + "\n";
detail = detail + tr("子网掩码:") + nae.netmask().toString() + "\n";
detail = detail + tr("广播地址:") + nae.broadcast().toString() + "\n";
}
}
QMessageBox::information(this, tr("Detail"), detail);
}
main.cpp具体代码如下:
#include "networkinfo.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
NetworkInfo ni;
ni.show();
return a.exec();
}
这样就实现了简单地获取本地网络信息的小程序。
在QtCreator中新建一个QtWidgetApplication,命名为“NetworkInfo”,继承自QWidget类,不需要自动生成ui文件。
networkinfo.h文件的具体代码如下:
#ifndef NETWORKINFO_H
#define NETWORKINFO_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QMessageBox>
#include <QHostInfo>
#include <QNetworkInterface>
class NetworkInfo : public QWidget
{
Q_OBJECT
public:
NetworkInfo(QWidget *parent = 0);
~NetworkInfo();
void getHostInfomation();
private:
QLabel *hostLabel;
QLineEdit *LineEditLocalHostName;
QLabel *ipLabel;
QLineEdit *LineEditAddress;
QPushButton *detailBtn;
QGridLayout *mainLayout;
public slots:
void slotDetail();
};
#endif // NetworkInfo_H
networkinfo.cpp的具体代码如下:
#include "networkinfo.h"
NetworkInfo::NetworkInfo(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);
getHostInfomation();
connect(detailBtn, SIGNAL(clicked()), this, SLOT(slotDetail()));
}
NetworkInfo::~NetworkInfo()
{
}
void NetworkInfo::getHostInfomation(){
QString localHostName = QHostInfo::localHostName();
LineEditLocalHostName->setText(localHostName);
QHostInfo hostInfo = QHostInfo::fromName(localHostName);
QList listAddress = hostInfo.addresses();
if(!listAddress.isEmpty())
{
LineEditAddress->setText(listAddress.first().toString());
}
}
void NetworkInfo::slotDetail()
{
QString detail = "";
QList list = QNetworkInterface::allInterfaces();
for(int i=0;i<list.count();i++)
{
QNetworkInterface ni = list.at(i);
detail = detail + tr("设备") + ni.name() + "\n";
detail = detail + tr("硬件地址:") + ni.hardwareAddress() + "\n";
QList entryList = ni.addressEntries();
for (int j = 0; j<entryList.count();j++)
{
QNetworkAddressEntry nae = entryList.at(j);
detail = detail + tr("IP地址:") + nae.ip().toString() + "\n";
detail = detail + tr("子网掩码:") + nae.netmask().toString() + "\n";
detail = detail + tr("广播地址:") + nae.broadcast().toString() + "\n";
}
}
QMessageBox::information(this, tr("Detail"), detail);
}
main.cpp具体代码如下:
#include "networkinfo.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
NetworkInfo ni;
ni.show();
return a.exec();
}
这样就实现了简单地获取本地网络信息的小程序。
0 0
- Qt获取本地网络信息的实例
- Qt获取网络信息
- Qt4获取本地网络信息
- Qt网络获取外网的网络信息
- Qt-获取主机网络信息
- Windows获取本地机器的全部网络配置信息
- Qt网络获取本机网络信息
- Qt网络获取本机网络信息
- Qt网络编程之获取网络信息
- QT 进行网络监测----获取本地IP
- 使用Wininet获取网络信息的方法总结及实例
- 本地计算机网络信息的获取
- 本地计算机网络信息的获取
- 本地计算机网络信息的获取
- Qt 获取本机网络信息
- qt获取本机网络信息
- Qt---获取本机网络信息
- QT获取本机网络信息
- c语言学习之语句篇
- Linux下的动态和静态库的创建
- 《Effective java》读书记录-第11条-谨慎地覆盖clone
- fgets函数规范的字符串输入函数
- sourcetree 的基本应用
- Qt获取本地网络信息的实例
- oracle临时表及临时表空间
- 保证数据完整性
- SharePoint 2013 解决Microsfot@ Project Server 20313 在WEB丢失,更新了安装步骤。
- Deep Machine Learning libraries and frameworks
- 插入排序
- hdoj2023求平均成绩
- srebmuNowTddA.2
- Elasticsearch源码加载到eclipse调试