1.界面布局
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6e6455bae5bc406bac8a0675fa4dbb7c.png)
2.文件mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QPushButton>
#include<QTextBrowser>
#include<QHBoxLayout>
#include<QTimer>
#include<QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QPushButton *pushButton[2];
QTextBrowser *textBrowser;
QWidget *hwidget;
QWidget *vwidget;
QHBoxLayout *hBoxLayout;
QVBoxLayout *vBoxLayout;
QTimer *timer;
QString getHostInfo();
private slots:
void timerTimeOut();
void showHostInfo();
void timerStart();
void clearHostInfo();
};
#endif
3.mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QHostInfo>
#include<QNetworkInterface>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setGeometry(0,0,800,480);
pushButton[0] = new QPushButton();
pushButton[1] = new QPushButton();
pushButton[0]->setText("获取本机信息");
pushButton[1]->setText("清空文本信息");
pushButton[0]->setSizePolicy(QSizePolicy::Fixed,
QSizePolicy::Fixed);
pushButton[1]->setSizePolicy(QSizePolicy::Fixed,
QSizePolicy::Fixed);
hwidget = new QWidget();
vwidget = new QWidget();
hBoxLayout = new QHBoxLayout();
vBoxLayout = new QVBoxLayout();
textBrowser = new QTextBrowser();
hBoxLayout->addWidget(pushButton[0]);
hBoxLayout->addWidget(pushButton[1]);
hwidget->setLayout(hBoxLayout);
vBoxLayout->addWidget(textBrowser);
vBoxLayout->addWidget(hwidget);
vwidget->setLayout(vBoxLayout);
setCentralWidget(vwidget);
timer = new QTimer();
connect(pushButton[0],SIGNAL(clicked()),this,SLOT(timerStart()));
connect(pushButton[1],SIGNAL(clicked()),this,SLOT(clearHostInfo()));
connect(timer,SIGNAL(timeout()),this,SLOT(timerTimeOut()));
}
MainWindow::~MainWindow()
{
delete ui;
}
QString MainWindow::getHostInfo()
{
QString str = "主机名称:"+QHostInfo::localHostName()+"\n";
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface interface,list){
str += "网卡设备:" + interface.name()+"\n";
str += "MAC地址:" + interface.hardwareAddress()+"\n";
QList<QNetworkAddressEntry> entryList= interface.addressEntries();
foreach (QNetworkAddressEntry entry, entryList) {
if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {
str+= "IP 地址:" + entry.ip().toString() + "\n";
str+= "子网掩码:" + entry.netmask().toString() + "\n";
str+= "广播地址:" + entry.broadcast().toString() + "\n\n";
}
}
}
return str;
}
void MainWindow::timerTimeOut()
{
showHostInfo();
timer->stop();
}
void MainWindow::showHostInfo()
{
textBrowser->insertPlainText(getHostInfo());
}
void MainWindow::timerStart()
{
textBrowser->clear();
timer->start(1000);
}
void MainWindow::clearHostInfo()
{
textBrowser->clear();
}