欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT利用QProcess獲取計算機硬件信息

 更新時間:2022年06月15日 16:42:06   作者:wendy_ya  
本文介紹利用QProcess獲取計算機的CPU、主板、硬盤等電腦相關硬件信息。文中的示例代碼講解詳細,對我們學習QT有一定的幫助,感興趣的可以了解一下

一、項目介紹

本文介紹利用QProcess獲取計算機的CPU、主板、硬盤等電腦相關硬件信息。

windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了從命令行接口和批命令腳本執(zhí)行系統(tǒng)管理的支持??梢源蜷_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”,取消選中創(chuàng)建UI界面復選框,完成項目創(chuàng)建。

【注意事項】:本程序僅限于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)  //分離式啟動,主程序退出后,外部程序繼續(xù)運行
    p.waitForFinished(-1);  //超時等待,設置為-1,直到執(zhí)行完成
    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獲取計算機硬件信息的文章就介紹到這了,更多相關QT獲取計算機硬件信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++中求數組長度的方法詳解

    C++中求數組長度的方法詳解

    C++中沒有直接提供求數組長度的方法,提供了sizeof(),begin(),end()等方法,可以供求數組長度使用,文中通過代碼示例給大家講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • C語言實現為無聲avi視頻添加wave音樂

    C語言實現為無聲avi視頻添加wave音樂

    這篇文章主要為大家詳細介紹了C語言如何實現為無聲avi視頻添加wave音樂,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-11-11
  • Opencv實現聯合雙邊濾波

    Opencv實現聯合雙邊濾波

    這篇文章主要為大家詳細介紹了Opencv實現聯合雙邊濾波,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C語言實現消消樂游戲的代碼分享

    C語言實現消消樂游戲的代碼分享

    本章我們將編寫十字消除游戲,用戶點擊空白方塊,沿其上下左右方向尋找第一個彩色方塊,如果有兩個或兩個以上顏色一致,就將其消除,感興趣的可以了解一下
    2023-02-02
  • C語言實現簡單酒店管理系統(tǒng)

    C語言實現簡單酒店管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現簡單酒店管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++初階學習之模板進階

    C++初階學習之模板進階

    這篇文章主要為大家介紹了C++模板進階,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++統(tǒng)計軟件使用時間代碼示例

    C++統(tǒng)計軟件使用時間代碼示例

    這篇文章主要介紹了C++統(tǒng)計軟件使用時間的小程序,大家可以參考使用
    2013-11-11
  • C語言單鏈表實現圖書管理系統(tǒng)

    C語言單鏈表實現圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言單鏈表實現圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言的字符空間與非字符空間你了解嗎

    C語言的字符空間與非字符空間你了解嗎

    這篇文章主要介紹了C語言的字符空間與非字符空間,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • c++超細致講解引用

    c++超細致講解引用

    在我們日常的生活中每個人都或多或少存在一個"外號",例如《西游記》中孫悟空就有諸多外號:美猴王,孫行者,齊天大圣等等。那么在C++中,也可以給一個已經存在的變量取別名,這就是引用。那么接下來深入來探討一下引用
    2022-05-05

最新評論