Qt网络编程学习(获取本机网络信息)

补充:

QGridLayout中的 addwidget参数的意义

依次代表 行 列 占用行数 占用列数

主要头文件:

QNetworkInterface

QHostInfo

主要函数

 QString LocalHostName=QHostInfo::localHostName();
    //获得本机主机名
    QHostInfo hostInfo=QHostInfo::fromName(LocalHostName);//根据主机名的信息,获得ip地址信息
    QList<QHostAddress> ListAdress=hostInfo.addresses();//获得主机的ip地址列表

具体代码如下

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QPushButton>
#include<QLineEdit>
#include<QLabel>
#include<QGridLayout>
#include<QMessageBox>
#include<QtNetwork/QNetworkInterface>
#include<QtNetwork/QHostInfo>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    void getHostInformation();
    ~Widget();
private:
    QPushButton *detalBtn;
    QLineEdit * LineEditLocalHostName;
    QLineEdit *LineEditAdress;
    QLabel *hostLabel;
    QLabel *ipLabel;
    QGridLayout *mainLayout;
public slots:
    void slotDetal();
};

#endif // WIDGET_H
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    hostLabel= new QLabel(this);
    hostLabel->setText(QStringLiteral("主机名"));
    ipLabel=new QLabel(this);
    ipLabel->setText(QStringLiteral("ip地址"));
    LineEditAdress=new QLineEdit(this);
    LineEditLocalHostName= new QLineEdit(this);
    detalBtn=new QPushButton(this);
    mainLayout=new QGridLayout(this);
    mainLayout->addWidget(hostLabel,0,1);
    mainLayout->addWidget(LineEditLocalHostName,0,2);
    mainLayout->addWidget(ipLabel,1,1);
    mainLayout->addWidget(LineEditAdress,1,2);
    mainLayout->addWidget(detalBtn,2,1,1,2);//行 列 占用行数 占用列数
    detalBtn->setText(QStringLiteral("详细"));
    getHostInformation();
    connect(detalBtn,&QPushButton::clicked,this,&Widget::slotDetal);
}

void Widget::getHostInformation()
{
    QString LocalHostName=QHostInfo::localHostName();
    //获得本机主机名
    LineEditLocalHostName->setText(LocalHostName);
    QHostInfo hostInfo=QHostInfo::fromName(LocalHostName);//根据主机名的信息,获得ip地址信息

    QList<QHostAddress> ListAdress=hostInfo.addresses();//获得主机的ip地址列表
    LineEditAdress->setText(ListAdress.at(1).toString());
}
Widget::~Widget()
{

}
void Widget::slotDetal()
{
QString detail="";

QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();//提供主机ip地址和网络接口
for(int i=1;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();//提供子网掩码和ip地址以及广播地址
    for(int j=1;j<entryList.count();j++)
    {
        QNetworkAddressEntry entry=entryList.at(j);
        detail+=" "+tr("ip")+entry.ip().toString()+"\n";
        detail+=" "+tr("子网掩码")+entry.netmask().toString()+"\n";
        detail+=" "+tr("广播地址")+entry.broadcast().toString()+"\n";
    }
}
QMessageBox::information(this,tr("detail"),detail);
}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值