QHostInfo 类
QHostInfo 类为主机名查找提供静态函数。
QHostInfo 使用操作系统提供的查找机制来查找与主机名关联的 IP 地址,或与 IP 地址关联的主机名。 该类提供了两个静态便利函数:一个异步工作并在找到主机后发出信号,另一个阻塞并返回 QHostInfo 对象。
调用 lookupHost()异步查找主机的 IP 地址,将主机名或 IP 地址、接收器对象和插槽签名作为参数并返回一个ID。
可以通过使用查找 ID 调用 abortHostLookup() 来中止查找。
.pro文件增加:
QT+= network
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QtNetwork/QHostInfo>
#include <QLabel>
//#pragma comment(lib,"Winmm.lib")//这句也不知现在有没有必要加了
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//实例QLabel
QLabel *label = new QLabel(this);
//QLabel位置
label->setGeometry(QRect(50,50,200,25));
QString str = "ipV4地址:";
//获取计算机名称
QString localHostName = QHostInfo::localHostName();
qDebug() << "计算机名:" << localHostName;
//获取IP地址
QHostInfo info = QHostInfo::fromName(localHostName);
//遍历地址,只获取IPV4地址
foreach(QHostAddress address,info.addresses())
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
{
qDebug() << "ipV4地址:" << address.toString();
//输出结果
label->setText(str+address.toString());
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}