😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍Qt获取操作系统和网络信息示例。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞
文章目录
- :smirk:1. 环境准备
- :blush:2. UI绘制
- :satisfied:3. 代码示例
😏1. 环境准备
这里用Qt5.12,新建工程,实现获取操作系统信息、时间信息、网络信息和系统启动项。
QT += core gui network
😊2. UI绘制
用了textbrowser
和label
。
😆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);
}
以上。