【Qt】Qt获取操作系统和网络信息示例

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍Qt获取操作系统和网络信息示例。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 环境准备
    • :blush:2. UI绘制
    • :satisfied:3. 代码示例

😏1. 环境准备

这里用Qt5.12,新建工程,实现获取操作系统信息、时间信息、网络信息和系统启动项

QT       += core gui network

在这里插入图片描述

😊2. UI绘制

用了textbrowserlabel

在这里插入图片描述

😆3. 代码示例

// startupitems.h
#ifndef STARTUPITEMS_H
#define STARTUPITEMS_H#include <QObject>
#include <QSettings>class StartupItems : public QObject
{Q_OBJECT
public:explicit StartupItems(QObject *parent = nullptr);// 获取系统启动项QStringList getStartupItems(){QSettings registry("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);return registry.childKeys();}// 添加启动项void addStartupItem(const QString& itemName, const QString& itemPath){QSettings registry("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);registry.setValue(itemName, itemPath);}// 删除启动项void removeStartupItem(const QString& itemName){QSettings registry("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);registry.remove(itemName);}signals:public slots:
};#endif // STARTUPITEMS_H
// startupitems.cpp
#include "startupitems.h"StartupItems::StartupItems(QObject *parent) : QObject(parent)
{// 可扩展实现
}
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QProcess>
#include <QTextCodec>
#include <QRegularExpression>
#include <QSysInfo>
#include <QDebug>
#include <QHostInfo>
#include <QNetworkInterface>
#include <QSettings>
#include <QDateTime>
#include <QLocale>
#include "startupitems.h"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();void getSystemInfo();void getNetworkInfo();void setStartupItems();void getDateTimeInfo();private slots:private:Ui::MainWindow *ui;StartupItems *startup;
};#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);getSystemInfo();getNetworkInfo();startup = new StartupItems();setStartupItems();getDateTimeInfo();}MainWindow::~MainWindow()
{delete ui;delete startup;
}void MainWindow::getSystemInfo()
{QString systemInfo = "";// 获取操作系统版本信息QString osVersion = QSysInfo::prettyProductName();systemInfo.append("操作系统版本:" + osVersion + "\n");// 获取计算机主机名QString hostName = QSysInfo::machineHostName();systemInfo.append("计算机主机名:" + hostName + "\n");// 获取处理器架构QString cpuArchitecture = QSysInfo::currentCpuArchitecture();systemInfo.append("处理器架构:" + cpuArchitecture + "\n");// 获取主机信息QString nativeEndian;if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {nativeEndian = "Big Endian";} else {nativeEndian = "Little Endian";}systemInfo.append("本机字节顺序:" + nativeEndian);ui->tb_sys->setPlainText(systemInfo);
}void MainWindow::getNetworkInfo()
{QString networkInfo = "";// 获取主机的 IP 地址列表QString hostName = QHostInfo::localHostName();QList<QHostAddress> ipAddresses = QHostInfo::fromName(hostName).addresses();networkInfo.append("当前网络信息: \n");foreach (const QHostAddress &address, ipAddresses) {if (address.protocol() == QAbstractSocket::IPv4Protocol) {networkInfo.append("IPv4: " + address.toString() + "\n");} else if (address.protocol() == QAbstractSocket::IPv6Protocol) {networkInfo.append("IPv6: " + address.toString() + "\n");}}//    // 获取网络接口列表
//    QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
//    qDebug() << "网络接口列表:";
//    foreach (const QNetworkInterface &interface, interfaces) {
//        qDebug() << "名称:" << interface.name();
//        qDebug() << "硬件地址:" << interface.hardwareAddress();
//        qDebug() << "IP 地址列表:";
//        foreach (const QNetworkAddressEntry &entry, interface.addressEntries()) {
//            qDebug() << entry.ip().toString();
//        }
//        qDebug() << "-----------------------";
//    }ui->tb_net->setPlainText(networkInfo);
}void MainWindow::setStartupItems()
{QString startupInfo = "";// 获取当前的启动项QStringList startupItems = startup->getStartupItems();startupInfo.append("当前的启动项:\n");for(const QString& item : startupItems){startupInfo.append(item + "\n");}// 添加示例启动项
//    QString itemName = "Poe";
//    QString itemPath = "C:\\Path\\To\\MyApp.exe";
//    startup->addStartupItem(itemName, itemPath);
//    qDebug() << "添加启动项:" << itemName;//    // 再次获取启动项,验证是否添加成功
//    startupItems = startup->getStartupItems();
//    qDebug() << "当前的启动项:";
//    for(const QString& item : startupItems)
//    {
//        qDebug() << item;
//    }//    // 删除示例启动项
//    startup->removeStartupItem(itemName);
//    qDebug() << "删除启动项:" << itemName;//    // 再次获取启动项,验证是否删除成功
//    startupItems = startup->getStartupItems();
//    qDebug() << "当前的启动项:";
//    for(const QString& item : startupItems)
//    {
//        qDebug() << item;
//    }ui->tb_start->setPlainText(startupInfo);
}void MainWindow::getDateTimeInfo()
{QString datetimeInfo = "";// 获取当前日期和时间QDateTime currentDateTime = QDateTime::currentDateTime();QString currentDateTimeString = currentDateTime.toString(Qt::DefaultLocaleLongDate);datetimeInfo.append("当前日期和时间:" + currentDateTimeString + "\n");// 获取星期信息QString dayOfWeekString = currentDateTime.toString("dddd");datetimeInfo.append("星期:" + dayOfWeekString);ui->tb_time->setPlainText(datetimeInfo);
}

请添加图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215251.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有明确的报错信息,阿里云国际版Windows服务器无法远程连接

在远程连接失败时&#xff0c;如果您没有收到系统返回的报错信息&#xff0c;并且ECS实例是运行中的状态&#xff0c;然后再根据以下步骤进行排查&#xff1a; 步骤一&#xff1a;使用阿里云Workbench工具测试远程登录 步骤二&#xff1a;检查是否有收到黑洞通知 步骤三&…

Hbase2.5.5分布式部署安装记录

文章目录 1 环境准备1.1 节点部署情况1.2 安装说明 2 Hbase安装过程Step1&#xff1a;Step2:Step3:Step4&#xff1a; 3 Web UI检查状态并测试3.1 Web UI3.2 创建测试命名空间 1 环境准备 1.1 节点部署情况 Hadoop11&#xff1a;Hadoop3.1.4 、 zookeeper3.4.6、jdk8 Hadoop1…

Unity之OpenXR+XR Interaction Toolkit接入微软VR设备Windows Mixed Reality

前言 Windows Mixed Reality 是 Microsoft 用于增强和虚拟现实体验的VR设备,如下图所示: 在国内,它的使用率很低,一把都是国外使用,所以适配起来是相当费劲。 这台VR设备只能用于串流Windows,启动后,会自动连接Window的Mixed Reality程序,然后打开微软的增强现实门户…

云原生的 CI/CD 框架tekton - Trigger(二)

上一篇为大家详细介绍了tekton - pipeline&#xff0c;由于里面涉及到的概念比较多&#xff0c;因此需要好好消化下。同样&#xff0c;今天在特别为大家分享下tekton - Trigger以及案例演示&#xff0c;希望可以给大家提供一种思路哈。 文章目录 1. Tekton Trigger2. 工作流程3…

在线学习平台-课程分页、用户管理、教师查询

在线学习平台------手把手教程&#x1f448; 用户管理 添加功能增强 新增属性 若依里的用户模块(SysUser)是没有课程这一属性的,要实现我们自己的课程分页查询功能 这个位置传入的实体类SysUser要加上classId,记得加上get、set方法 更改sql语句 ctrl 鼠标左键不断点进去…

C++联合体union

联合体 将多个类型合并到一起省空间 枚举与联合一起使用 匿名联合 类似于无作用域 &#xff23;11联合体定义非内建类型 C11 引入了能够在联合体中使用非内建类型的能力&#xff0c;这些类型包括具有自定义构造函数、析构函数、拷贝构造函数和拷贝赋值运算符的类。 关键特性…

如何将用户有过行为的item用list形式记录下来,另外如何计算list里的个数

导语&#xff1a; 最近做项目&#xff0c;发现有些语法想一想是知道&#xff0c;但实际操作起来跟想的情况不一样哈哈。不是遇见bug就是输出的结果不是自己想要的&#xff0c;CSDN跟知乎找了很多没怎么解决&#xff0c;后面多摸索多实操终于解决&#xff01; test_data[item_…

JAVA实操经验

零&#xff1a; 按照需要&#xff0c;可以使用需要某个类下&#xff08;主要是java提供的&#xff09;的方法来实现某个功能。&#xff08;主要是用在不同类下的方法会进行重写功能不同&#xff09; 方法和构造方法不同&#xff1a;方法是方法&#xff0c;构造方法是构造器&a…

开箱即用的C++决策树简单实现

一个数据结构期末作业&#xff08;有兴趣用的话可以高抬贵手star下⭐~&#xff09;GitHub - mcxiaoxiao/c-Decision-tree: 决策树c简单实现 &#x1f333; c-Decision-tree 附大作业/课设参考文档.doc &#x1f333; c-Decision-tree Introduction &#x1f64c; c-Decision…

【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用

目录 1 方法一&#xff1a;逐个生成Motorola S-record&#xff08;s19&#xff0c;srec…&#xff09;&#xff0c;Intel HEX&#xff0c;Bin文件 1.1 生成Motorola S-record&#xff08;s19&#xff0c;srec…&#xff09;文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …

redis(设置密码)配置文件详细

1.设置账号密码端口 config set requirepass 123456 设置密码为123456 config get requirepass 查看账号密码 auth 123456 登入的时候输入这个确定账号密码 1. 首先连接到Redis服务器: redis-cli 2. 然后使用CONFIG SET命令设置requirepass参数并指定密码: CONFIG SET requi…

Android Audio实战——音频链路分析(二十五)

在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链…

SpringData JPA 搭建 xml的 配置方式

1.导入版本管理依赖 到父项目里 <dependencyManagement><dependencies><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-bom</artifactId><version>2021.1.10</version><scope>…

uniapp实战 —— 弹出层 uni-popup (含vue3子组件调父组件的方法)

效果预览 弹出的内容 src\pages\goods\components\ServicePanel.vue <script setup lang"ts"> // 子组件调父组件的方法 const emit defineEmits<{(event: close): void }>() </script><template><view class"service-panel"…

XCube——用于超高分辨率 3D 形状和场景的生成模型!

他们的方法在稀疏体素网格的层次结构上训练潜在扩散模型的层次结构。他们在稀疏结构 VAE 的潜在空间上进行扩散&#xff0c;它为层次结构的每个级别学习紧凑的潜在表示。 XCube 是稀疏体素层次上的分层潜在扩散模型&#xff0c;即从粗到细的 3D 稀疏体素网格序列&#xff0c;使…

视频集中存储/智能分析融合云平台EasyCVR平台接入rtsp,突然断流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

RabbitMQ反序列化未经授权的类异常解决方案

配置好生产者消费者后&#xff0c;消费者项目启动后出现如下异常&#xff1a; Caused by: java.lang.SecurityException: Attempt to deserialize unauthorized 这是反序列化未经授权的类&#xff0c;解决办法是设置信任所有消息发起者&#xff0c;可以将环境变量&#xff1a; …

【算法优选】 动态规划之路径问题——贰

文章目录 &#x1f38b;前言&#x1f332;[下降最小路径和](https://leetcode.cn/problems/minimum-path-sum/)&#x1f6a9;题目描述&#x1f6a9;算法思路&#xff1a;&#x1f6a9;代码实现 &#x1f38d;[最小路径和](https://leetcode.cn/problems/minimum-path-sum/)&…

搜集怎么绘制三维曲线和曲面?

1、针对函数对象是单一变量、两个函数的情况。用plot3函数&#xff1b;&#xff08;三维曲线&#xff09; 看一下matlab官方的例子&#xff1a; t 0:pi/50:10*pi; st sin(t); ct cos(t); plot3(st,ct,t) 绘制出来的曲线&#xff1a; 几个比较关键的点&#xff1a; &…

基于SpringBoot+Vue前后端分离的景点数据分析平台(Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…