qt获取本机网络信息

networkinformation.h

#include<QtGui/QWidget>
#include<QLabel>
#include<QPushButton>
#include<QLineEdit>
#include<QGridLayout>
#include<QHostInfo>


class NetworkInformation:public QWidget
{
	Q_OBJECT
	
	public:
		NetworkInformation(QWidget *parent=0);
		void getHostInformation();
		//~NetworkInformation();
	
	public slots:
		void slotDetail();

	private:
		QLabel *hostLabel;
		QLineEdit *LineEditLocalHostName;
		QLabel *ipLabel;
		QLineEdit *LineEditAddress;
		QPushButton *detailBtn;
		QGridLayout *mainLayout;
};

networkinformation.cpp:

#include<QNetworkInterface>
#include<QMessageBox>
#include"networkinformation.h"


NetworkInformation::NetworkInformation(QWidget *parent)
	:QWidget(parent)
{
	hostLabel=new QLabel(tr("host:"));
	LineEditLocalHostName=new QLineEdit;
	ipLabel=new QLabel(tr("IP:"));
	LineEditAddress=new QLineEdit;

	detailBtn=new QPushButton(tr("details"));

	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()));
}


void NetworkInformation::getHostInformation()
{
	QString localHostName=QHostInfo::localHostName();
	LineEditLocalHostName->setText(localHostName);

	QHostInfo hostInfo=QHostInfo::fromName(localHostName);
	QList<QHostAddress> listAddress=hostInfo.addresses();

	if(!listAddress.isEmpty())
	{
		LineEditAddress->setText(listAddress.first().toString());
	}
}


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("shebei:")+interface.name()+"\n";
		QString hardwareAddress=interface.hardwareAddress();
		detail=detail+tr("hardware address:")+interface.hardwareAddress()+"\n";
		QList<QNetworkAddressEntry> entryList=interface.addressEntries();

		for(int j=0;j<entryList.count();j++)
		{
			QNetworkAddressEntry entry=entryList.at(j);
			detail=detail+"\t"+tr("ip address:")+entry.ip().toString()+"\n";
			detail=detail+"\t"+tr("netmask:")+entry.netmask().toString()+"\n";
			detail=detail+"\t"+tr("broadcast:")+entry.broadcast().toString()+"\n";
		}
	}
	QMessageBox::information(this,tr("Detail"),detail);
}

main.cpp:

#include<QtGui/QApplication>
#include"networkinformation.h"
#include<QTextCodec>


int main(int argc, char *argv[])
{
	QApplication a(argc,argv);
	QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
	NetworkInformation w;
	w.show();
	return a.exec();
}


posted @ 2014-11-29 15:45  bzyzhang  阅读(205)  评论(0编辑  收藏  举报