【VS+QT开发】获取本地网络信息小软件(C++)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【VS+QT开发】获取本地网络信息小软件(C++),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4102字,纯文字阅读大概需要6分钟。
内容图文
![【VS+QT开发】获取本地网络信息小软件(C++)](/upload/InfoBanner/zyjiaocheng/857/6a2589ead5754e608d2baedcc44f094c.jpg)
简介
考虑到之前的那一个安装可能实现上有点复杂,也不知道你愿不愿意看。
所以,这里就实现一个简单的。
对了,考虑到我垃圾般的程序员审美,所以,如果觉得不好看的话,后期可以自己尝试看看能不能挑一下颜色,图片等一系列操作的。
- 但是,下面的这版本,就是全用代码实现的。
- 原因很简单,就是我担心你不太会用Qt designer
- 但是,其实这个还是蛮简单的。就是简单大拖动一下就好。只需要记住这个ui的这个控件,叫什么名字,自己后期针对性的控制一下就好了。
开发环境:
VS2017 + QT
- 关于上面的这个东西怎么配置可以参考
- https://blog.csdn.net/a19990412/article/details/82882697
由于开发环境的原因导致的不一致问题:
- 由于是在VS上开发QT文件,所以网络上的很多QT代码需要做修改之后才行。放心,我这里的代码都是可以直接在VS可以运行成功的QT代码
- 主要形式体现在:
- 导入文件的开头变成小写的q而不是网络上常见的Q
- ui,在VS上不再是指针,而是一个类了。所以,操作起来会比较像Python。(这个你应该很熟)
这里的话,创建项目的方式也是非常简单。
- 具体可以参照
- https://www.jianshu.com/p/a81350d630dd
- 文章的后半部分
我这的项目名字是: QtGuiApplicationTest
所以,在创建的文件当中,我会需要修改两个文件。
QtGuiApplicationTest.h
QtGuiApplicationTest.cpp
QtGuiApplicationTest.h
#pragma once
#pragma execution_character_set("utf-8")
#include <QtWidgets/QMainWindow>
#include "ui_QtGuiApplicationTest.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include <qgridlayout.h>
#include <qlineedit.h>
#include <qmessagebox.h>
#include <QtNetwork\qhostinfo.h>
#include <QtNetwork\qnetworkinterface.h>
class QtGuiApplicationTest : public QMainWindow
{
Q_OBJECT
public:
QtGuiApplicationTest(QWidget *parent = Q_NULLPTR);
void getHostInformation();
public slots:
void slotDetail();
private:
Ui::QtGuiApplicationTestClass ui;
QLabel *hostLable;
QLineEdit *LineEditLocalHostName;
QLabel *ipLabel;
QLineEdit *LineEditAddress;
QPushButton * detailBtn;
QGridLayout *mainLayout;
};
QtGuiApplicationTest.cpp
#include "QtGuiApplicationTest.h"
QtGuiApplicationTest::QtGuiApplicationTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
hostLable = new QLabel(tr("主机名:"));
LineEditLocalHostName = new QLineEdit;
ipLabel = new QLabel(tr("IP 地址:"));
LineEditAddress = new QLineEdit;
detailBtn = new QPushButton(tr("详细"));
mainLayout = new QGridLayout(ui.centralWidget);
mainLayout->addWidget(hostLable, 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 QtGuiApplicationTest::getHostInformation() {
QString localHostName = QHostInfo::localHostName();
LineEditLocalHostName->setText(localHostName);
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
int templen = 0;
QString ip = "";
for (int i = 0; i < list.count(); ++i) {
QNetworkInterface interface = list.at(i);
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
if (entryList.count() < templen) continue;
ip = entryList.at(entryList.count()-1).ip().toString();
templen = entryList.count();
}
LineEditAddress->setText(ip);
}
void QtGuiApplicationTest::slotDetail() {
QString detail = "", tempdetail="";
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
int templen = 0;
for (int i = 0; i < list.count(); ++i) {
QNetworkInterface interface = list.at(i);
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
if (entryList.count() < templen) continue;
tempdetail = tr("设备:") + interface.name() + "\n";
tempdetail = tempdetail + tr("硬件地址:") + interface.hardwareAddress() + "\n";
for (int j = 0; j < entryList.count(); ++j) {
QNetworkAddressEntry entry = entryList.at(j);
tempdetail = tempdetail + " " + tr("IP 地址:") + entry.ip().toString() + "\n";
tempdetail = tempdetail + " " + tr("子网掩码:") + entry.netmask().toString() + "\n";
tempdetail = tempdetail + " " + tr("广播地址:") + entry.broadcast().toString() + "\n";
}
detail = tempdetail;
templen = entryList.count();
}
QMessageBox::information(this, tr("Detail"), detail);
}
配置上的操作
还需要把 Qt5Networkd.lib
这个库添加到项目的链接器中的附加依赖项。
就把上面这个东西,复制上去就好了。(只是名字,它会自己找的。。)
运行效果
内容总结
以上是互联网集市为您收集整理的【VS+QT开发】获取本地网络信息小软件(C++)全部内容,希望文章能够帮你解决【VS+QT开发】获取本地网络信息小软件(C++)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。