最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT利用QProcess獲取計(jì)算機(jī)硬件信息

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

一、項(xiàng)目介紹

本文介紹利用QProcess獲取計(jì)算機(jī)的CPU、主板、硬盤等電腦相關(guān)硬件信息。

windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了從命令行接口和批命令腳本執(zhí)行系統(tǒng)管理的支持??梢源蜷_cmd在其中輸入如下命令,獲取相關(guān)的信息。

//獲取cpu名稱
wmic cpu get Name
//獲取cpu核心數(shù)
wmic cpu get NumberOfCores
//獲取cpu線程數(shù)
wmic cpu get NumberOfLogicalProcessors
//查詢cpu:
wmic cpu get processorid
//查詢主板:
wmic baseboard get serialnumber
//查詢BIOS:
wmic bios get serialnumber
//查看硬盤:
wmic diskdrive get serialnumber
//獲取主板序唯一標(biāo)識(shí):
wmic csproduct get uuid
//查詢網(wǎng)卡連接唯一標(biāo)識(shí):
Wmic Path Win32_NetworkAdapter get GUID
//查詢網(wǎng)卡物理地址:
Wmic Path Win32_NetworkAdapter get NetEnabled
//查詢網(wǎng)卡是否啟用:
Wmic Path Win32_NetworkAdapter get NetEnabled
//查詢網(wǎng)卡是否為物理適配器:
Wmic Path Win32_NetworkAdapter get PhysicalAdapter
//查詢網(wǎng)卡索引號(hào):
Wmic Path Win32_NetworkAdapter get Index

二、項(xiàng)目基本配置

新建一個(gè)Qt案例,項(xiàng)目名稱為“InfoTest”,基類選擇“QWidget”,取消選中創(chuàng)建UI界面復(fù)選框,完成項(xiàng)目創(chuàng)建。

【注意事項(xiàng)】:本程序僅限于Qt5可運(yùn)行,Qt6不支持運(yùn)行。關(guān)于Qt6中如何運(yùn)行,可以直接看本文最后一部分

三、UI界面設(shè)置

無UI界面

四、主程序?qū)崿F(xiàn)

4.1 widget.h頭文件

首先在頭文件中定義一個(gè)私有函數(shù):

private:
    QString getInfo(const QString &cmd);

和8個(gè)公有函數(shù):

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

4.2 widget.cpp源文件

定義getInfo函數(shù):

QString Widget::getInfo(const QString &cmd)
{
    QProcess p;        //啟動(dòng)外部程序
    p.start(cmd);      //一體式啟動(dòng),不分離,主程序退出則啟動(dòng)程序退出,使用close關(guān)閉
    //p.startDetached(cmd)  //分離式啟動(dòng),主程序退出后,外部程序繼續(xù)運(yùn)行
    p.waitForFinished(-1);  //超時(shí)等待,設(shè)置為-1,直到執(zhí)行完成
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());//讀取運(yùn)行結(jié)果
    QStringList list = cmd.split(" ");  //將cmd按空格拆分
    result = result.remove(list.last(), Qt::CaseInsensitive);//刪除cmd序列中最后一個(gè)元素
    result = result.replace("\r", "");  //刪除\r
    result = result.replace("\n", "");  //刪除\n
    result = result.simplified();       //移除字符串兩端的空白字符
    p.close();
    return result;
}

接著定義七個(gè)函數(shù)獲取計(jì)算機(jī)相關(guān)硬件信息,如CPU、CPU核心數(shù)、CPU線程數(shù)等,代碼如下:

//查詢CPU型號(hào)
QString Widget::getCpuName()
{
  return getInfo("wmic cpu get Name");
}

//查詢CPU核心數(shù)
QString Widget::getCpuCore()
{
    return getInfo("wmic cpu get NumberOfCores");
}
//查詢CPU線程數(shù)
QString Widget::getCpuProcessors()
{
    return getInfo("wmic cpu get NumberOfLogicalProcessors");
}
//查詢CPU處理器標(biāo)識(shí)符
QString Widget::getCpuProcessorid()
{
     return getInfo("wmic cpu get processorid");
}
//查詢主板序列號(hào)
QString Widget::getBaseboardSerialnumber()
{
     return getInfo("wmic baseboard get serialnumber");
}
//查詢BIOS序列號(hào)
QString Widget::getBiosSerialnumber()
{
     return getInfo("wmic bios get serialnumber");
}
//查詢主板唯一標(biāo)識(shí)符
QString Widget::getBaseboardUuid()
{
     return getInfo("wmic csproduct get uuid");
}
//查詢硬盤標(biāo)識(shí)符
QString Widget::getDiskSerialnumber()
{
     return getInfo("wmic diskdrive get serialnumber");
}

最后在構(gòu)造函數(shù)中引用如上函數(shù):

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

    //新建布局
    QLabel *cpuLabel=new QLabel("CPU:");
    QLineEdit *cpuLineEdit=new QLineEdit;
    QLabel *coreLabel=new QLabel("CPU核心數(shù):");
    QLineEdit *coreLineEdit=new QLineEdit;
    QLabel *threadLabel=new QLabel("CPU線程數(shù):");
    QLineEdit *threadLineEdit=new QLineEdit;
    QLabel *idLabel=new QLabel("CPU處理器標(biāo)識(shí)符:");
    QLineEdit *idLineEdit=new QLineEdit;
    QLabel *baseboardLabel=new QLabel("主板序列號(hào):");
    QLineEdit *baseboardLineEdit=new QLineEdit;
    QLabel *biosLabel=new QLabel("Bios序列號(hào):");
    QLineEdit *biosLineEdit=new QLineEdit;
    QLabel *BidLabel=new QLabel("主板標(biāo)識(shí)符:");
    QLineEdit *BidLineEdit=new QLineEdit;
    QLabel *diskLabel=new QLabel("硬盤序列號(hào):");
    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);

構(gòu)造后界面如下:

然后引用函數(shù)獲取硬件信息:

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

五、效果演示

完整效果如下:

到此這篇關(guān)于QT利用QProcess獲取計(jì)算機(jī)硬件信息的文章就介紹到這了,更多相關(guān)QT獲取計(jì)算機(jī)硬件信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC中SendMessage和PostMessage的區(qū)別

    VC中SendMessage和PostMessage的區(qū)別

    這篇文章主要介紹了VC中SendMessage和PostMessage的區(qū)別,較為全面的分析了SendMessage和PostMessage運(yùn)行原理及用法上的不同之處,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++類中的繼承實(shí)例詳解

    C++類中的繼承實(shí)例詳解

    這篇文章主要介紹了C++類中的繼承實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Qt編寫地圖實(shí)現(xiàn)海量點(diǎn)位標(biāo)注

    Qt編寫地圖實(shí)現(xiàn)海量點(diǎn)位標(biāo)注

    海量點(diǎn)位標(biāo)注的出現(xiàn),是為了解決普通設(shè)備點(diǎn)超過幾百個(gè)性能極速降低的問題。本文將介紹如何通過Qt實(shí)現(xiàn)海量點(diǎn)位標(biāo)注功能,感興趣的可以了解一下
    2022-01-01
  • 詳解C++基礎(chǔ)——類繼承中方法重載

    詳解C++基礎(chǔ)——類繼承中方法重載

    這篇文章主要介紹了C++基礎(chǔ)——類繼承中方法重載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • c++拷貝構(gòu)造函數(shù)防篡改示例

    c++拷貝構(gòu)造函數(shù)防篡改示例

    這篇文章主要介紹了拷貝構(gòu)造函數(shù)防篡改示例,需要的朋友可以參考下
    2014-04-04
  • C語言實(shí)現(xiàn)萬年歷源碼

    C語言實(shí)現(xiàn)萬年歷源碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)萬年歷源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言基礎(chǔ)知識(shí)分享續(xù)篇

    C語言基礎(chǔ)知識(shí)分享續(xù)篇

    這篇文章主要介紹了C語言基礎(chǔ)知識(shí)分享續(xù)篇的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • OpenCV圖像處理之直方圖比較方法詳解

    OpenCV圖像處理之直方圖比較方法詳解

    直方圖比較是對(duì)輸入的兩張圖像進(jìn)行計(jì)算得到直方圖H1與H2,歸一化到相同的尺度空間,然后可以通過計(jì)算H1與H2的之間的距離得到兩個(gè)直方圖的相似程度,進(jìn)而比較圖像本身的相似程度。本文將為大家詳細(xì)講講直方圖比較的實(shí)現(xiàn)方法,需要的可以參考一下
    2022-09-09
  • c++利用vector創(chuàng)建二維數(shù)組的幾種方法總結(jié)

    c++利用vector創(chuàng)建二維數(shù)組的幾種方法總結(jié)

    這篇文章主要介紹了c++利用vector創(chuàng)建二維數(shù)組的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟

    VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03

最新評(píng)論

格尔木市| 临夏市| 惠来县| 临颍县| 梅河口市| 沙洋县| 古浪县| 镇宁| 且末县| 夏邑县| 安福县| 闽清县| 阿巴嘎旗| 桓台县| 图们市| 灌云县| 同江市| 本溪市| 昭苏县| 汝阳县| 上虞市| 泸水县| 永泰县| 丹棱县| 阳谷县| 池州市| 嘉黎县| 昌平区| 邹平县| 宁夏| 赤壁市| 崇左市| 乳山市| 泸定县| 大荔县| 金昌市| 安新县| 龙海市| 松滋市| 孟村| 陈巴尔虎旗|