新西兰服务器

QT如何利用QProcess获取计算机硬件信息


QT如何利用QProcess获取计算机硬件信息

发布时间:2022-06-16 10:06:14 来源:高防服务器网 阅读:65 作者:iii 栏目:开发技术

今天小编给大家分享一下QT如何利用QProcess获取计算机硬件信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    一、项目介绍

    本文介绍利用QProcess获取计算机的CPU、主板、硬盘等电脑相关硬件信息。

    windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。可以打开cmd在其中输入如下命令,获取相关的信息。

    //获取cpu名称  wmic cpu get Name  //获取cpu核心数  wmic cpu get NumberOfCores  //获取cpu线程数  wmic cpu get NumberOfLogicalProcessors  //查询cpu:  wmic cpu get processorid  //查询主板:  wmic baseboard get serialnumber  //查询BIOS:  wmic bios get serialnumber  //查看硬盘:  wmic diskdrive get serialnumber  //获取主板序唯一标识:  wmic csproduct get uuid  //查询网卡连接唯一标识:  Wmic Path Win32_NetworkAdapter get GUID  //查询网卡物理地址:  Wmic Path Win32_NetworkAdapter get NetEnabled  //查询网卡是否启用:  Wmic Path Win32_NetworkAdapter get NetEnabled  //查询网卡是否为物理适配器:  Wmic Path Win32_NetworkAdapter get PhysicalAdapter  //查询网卡索引号:  Wmic Path Win32_NetworkAdapter get Index

    二、项目基本配置

    新建一个Qt案例,项目名称为“InfoTest”,基类选择“QWidget”,取消选中创建UI界面复选框,完成项目创建。

    【注意事项】:本程序仅限于Qt5可运行,Qt6不支持运行。关于Qt6中如何运行,可以直接看本文最后一部分

    三、UI界面设置

    无UI界面

    四、主程序实现

    4.1 widget.h头文件

    首先在头文件中定义一个私有函数:

    private:      QString getInfo(const QString &cmd);

    和8个公有函数:

    public:      QString getCpuName();      QString getCpuCore();      QString getCpuProcessors();      QString getCpuProcessorid();      QString getBaseboardSerialnumber();      QString getBiosSerialnumber();      QString getBaseboardUuid();      QString getDiskSerialnumber();

    4.2 widget.cpp源文件

    定义getInfo函数:

    QString Widget::getInfo(const QString &cmd)  {      QProcess p;        //启动外部程序      p.start(cmd);      //一体式启动,不分离,主程序退出则启动程序退出,使用close关闭      //p.startDetached(cmd)  //分离式启动,主程序退出后,外部程序继续运行      p.waitForFinished(-1);  //超时等待,设置为-1,直到执行完成      QString result = QString::fromLocal8Bit(p.readAllStandardOutput());//读取运行结果      QStringList list = cmd.split(" ");  //将cmd按空格拆分      result = result.remove(list.last(), Qt::CaseInsensitive);//删除cmd序列中最后一个元素      result = result.replace("r", "");  //删除r      result = result.replace("n", "");  //删除n      result = result.simplified();       //移除字符串两端的空白字符      p.close();      return result;  }

    接着定义七个函数获取计算机相关硬件信息,如CPU、CPU核心数、CPU线程数等,代码如下:

    //查询CPU型号  QString Widget::getCpuName()  {    return getInfo("wmic cpu get Name");  }    //查询CPU核心数  QString Widget::getCpuCore()  {      return getInfo("wmic cpu get NumberOfCores");  }  //查询CPU线程数  QString Widget::getCpuProcessors()  {      return getInfo("wmic cpu get NumberOfLogicalProcessors");  }  //查询CPU处理器标识符  QString Widget::getCpuProcessorid()  {       return getInfo("wmic cpu get processorid");  }  //查询主板序列号  QString Widget::getBaseboardSerialnumber()  {       return getInfo("wmic baseboard get serialnumber");  }  //查询BIOS序列号  QString Widget::getBiosSerialnumber()  {       return getInfo("wmic bios get serialnumber");  }  //查询主板唯一标识符  QString Widget::getBaseboardUuid()  {       return getInfo("wmic csproduct get uuid");  }  //查询硬盘标识符  QString Widget::getDiskSerialnumber()  {       return getInfo("wmic diskdrive get serialnumber");  }

    最后在构造函数中引用如上函数:

    首先构造界面布局:(也可以在ui中直接新建布局)

        //新建布局      QLabel *cpuLabel=new QLabel("CPU:");      QLineEdit *cpuLineEdit=new QLineEdit;      QLabel *coreLabel=new QLabel("CPU核心数:");      QLineEdit *coreLineEdit=new QLineEdit;      QLabel *threadLabel=new QLabel("CPU线程数:");      QLineEdit *threadLineEdit=new QLineEdit;      QLabel *idLabel=new QLabel("CPU处理器标识符:");      QLineEdit *idLineEdit=new QLineEdit;      QLabel *baseboardLabel=new QLabel("主板序列号:");      QLineEdit *baseboardLineEdit=new QLineEdit;      QLabel *biosLabel=new QLabel("Bios序列号:");      QLineEdit *biosLineEdit=new QLineEdit;      QLabel *BidLabel=new QLabel("主板标识符:");      QLineEdit *BidLineEdit=new QLineEdit;      QLabel *diskLabel=new QLabel("硬盘序列号:");      QLineEdit *diskLineEdit=new QLineEdit;      //布局      QGridLayout *Layout=new QGridLayout(this);      Layout->addWidget(cpuLabel,0,0);      Layout->addWidget(cpuLineEdit,0,1);      Layout->addWidget(coreLabel,1,0);      Layout->addWidget(coreLineEdit,1,1);      Layout->addWidget(threadLabel,2,0);      Layout->addWidget(threadLineEdit,2,1);      Layout->addWidget(idLabel,3,0);      Layout->addWidget(idLineEdit,3,1);      Layout->addWidget(baseboardLabel,4,0);      Layout->addWidget(baseboardLineEdit,4,1);      Layout->addWidget(biosLabel,5,0);      Layout->addWidget(biosLineEdit,5,1);      Layout->addWidget(BidLabel,6,0);      Layout->addWidget(BidLineEdit,6,1);      Layout->addWidget(diskLabel,7,0);      Layout->addWidget(diskLineEdit,7,1);

    构造后界面如下:

    然后引用函数获取硬件信息:

        //获取硬件信息      cpuLineEdit->setText(getCpuName());      coreLineEdit->setText(getCpuCore());      threadLineEdit->setText(getCpuProcessors());      idLineEdit->setText(getCpuProcessorid());      baseboardLineEdit->setText(getBaseboardSerialnumber());      biosLineEdit->setText(getBiosSerialnumber());      BidLineEdit->setText(getBaseboardUuid());      diskLineEdit->setText(getDiskSerialnumber());

    五、效果演示

    完整效果如下:

    以上就是“QT如何利用QProcess获取计算机硬件信息”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注高防服务器网行业资讯频道。

    [微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

    [图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
    [