91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-06-16 10:06:14 來源:億速云 閱讀:594 作者: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);

    構造后界面如下:

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

    然后引用函數獲取硬件信息:

        //獲取硬件信息
        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如何利用QProcess獲取計算機硬件信息”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    安新县| 青神县| 富川| 木兰县| 闻喜县| 高雄市| 阿尔山市| 东阳市| 永兴县| 饶阳县| 兰坪| 申扎县| 五莲县| 利辛县| 黑河市| 九江县| 准格尔旗| 新密市| 江口县| 中卫市| 东台市| 綦江县| 申扎县| 宜宾市| 开远市| 晴隆县| 牡丹江市| 河津市| 息烽县| 开平市| 五大连池市| 山阴县| 双辽市| 大城县| 宝兴县| 平潭县| 西昌市| 新平| 盐城市| 沐川县| 甘肃省|