【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.hqwc.cn/news/277002.html

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

相关文章

NFS|在linux环境下的安装和配置NFS

简介 NFS全称网络文件系统&#xff0c;可用于不同服务器之间的文件共享。 接下来介绍下NFS在linux环境下安装和配置。主要分为服务端和客户端。 服务端安装 开启rpcbind/portmap和nfs服务 # service portmaper start [rootlocalhost java]# service portmap start Redirectin…

linux 查看服务启动时间

文章目录 linux 查看服务启动时间参数解析 linux 查看服务启动时间 [root104 ~]# ps -o lstart -p ps -ef |grep -v grep |grep "zookeeper"|awk {print$2}STARTED Fri Dec 15 16:54:10 2023参数解析 linux 命令中 ps -ef 详解 ps -ef表示查看全格式的进程。 ps …

【Spring Boot】视图渲染技术之Freemarker

一、引言 1、什么是Freemarker FreeMarker是一款模板引擎&#xff0c;基于模板和要改变的数据&#xff0c;并用来生成输出文本&#xff08;HTML网页、电子邮件、配置文件、源代码等&#xff09;的通用工具。它不是面向最终用户的&#xff0c;而是一个Java类库&#xff0c;是一款…

JVM虚拟机系统性学习-JVM调优之通过gceasy分析GC日志对堆、元空间、线程堆栈和垃圾回收器进行调优

通过 gceasy工具对生成的 GC 日志进行分析 这里使用的 JDK 版本为 JDK8&#xff01; 在分析 GC 日志时&#xff0c;可以同时采用多种工具&#xff08;Arthas、gceasy、JVM 连接 Graphana 监控&#xff09;进行分析&#xff0c;避免某种工具分析不准确 gceasy 每个月只可以免费…

未来应用从何而来:认知力延伸、边界突破、回归云与产业

文 | 智能相对论 作者 | 沈浪 或许&#xff0c;谁也没想到未来应用来的如此之快&#xff0c;现如今传统应用从开发到体验&#xff0c;已经进入了一个前所未有的颠覆性改革阶段。 不久前&#xff0c;美国人工智能公司OpenAI举办开发者大会。在现场&#xff0c;公司创始人Sam …

7+m6A+分型+实验,甲基化方向的生信思路,没有思路的同学可参考

今天给同学们分享一篇生信文章“Landscape analysis of m6A modification regulators related biological functions and immune characteristics in myasthenia gravis”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; MG相…

浅谈MapReduce

MapReduce是一个抽象的分布式计算模型&#xff0c;主要对键值对进行运算处理。用户需要提供两个自定义函数&#xff1a; map&#xff1a;用于接受输入&#xff0c;并生成中间键值对。reduce&#xff1a;接受map输出的中间键值对集合&#xff0c;进行sorting后进行合并和数据规…

AI日报:谷歌Gemini Pro即将面向企业和开发者

文章目录 总览Gemini介绍 模型能力产品API其他产品Imagen2和其他新闻Duet AI 总览 现在&#xff0c;您可以免费访问Gemini Pro的API&#xff0c;这是谷歌最新大型语言模型的第一个版本。 Gemini 介绍 谷歌通过其API让企业和开发者第一次看到了其最强大的大型语言模型Gemini。…

NXP应用随记(四):eMios阅读随记-整体功能概述

目录 1、eMios IP介绍 2、时钟结构 3、通道类型 4、功能介绍 5、中断与DMA 6、EMIOS -通道分配建议(针对S32K312) 1、eMios IP介绍 Emios是什么&#xff1f;eMIOS提供了独立的通道(UCs)&#xff0c;您可以配置这些通道来为不同的功能生成或测量时间事件。 每个eMIOS实例最…

上海亚商投顾:沪指再度失守3000点 北向资金净卖出近百亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日集体调整&#xff0c;尾盘均跌超1%&#xff0c;北证50则逆势拉升涨超3%。医药股逆势走强&#xf…

文件操作2❤

一&#xff1a;文件的顺序读写 1&#xff1a;顺序读写函数 函数名 功能 适⽤于 fgetc 字符输⼊函数 所有输⼊流 fputc 字符输出函数 所有输出流 fgets ⽂本⾏输⼊函数 所有输⼊流 fputs ⽂本⾏输出函数 所有输出流 fscanf 格式化…

linux高级管理——LAMP平台部署及应用

一、认识LAMP&#xff1a; 在LAMP平台的四个构成组件中&#xff0c;每个组件都承担着一部分关键应用。经过十几年的发展&#xff0c;各组件间的兼容性得到了不断的完善&#xff0e;协作能力和稳定性也不断增强&#xff0c;可以构建出非常优秀的Web应用系统。各组件的主要作用如…