Qt之命令列參數

來源:互聯網
上載者:User

標籤:

簡述

在 Qt之處理序間通訊(QProcess)一節,我們講解了如何通過QProcess來進行進程間的通訊。主要通過啟動外部程式,然後通過命令列的方式傳遞參數。

這裡,我們可以通過Qt Creator來設定命令列參數Arguments,來設定需要用到的資訊。也可以用來測試其它進程傳參功能。

  • 簡述
  • 設定參數
  • 解析
  • 更多參考

設定參數

選擇:項目 -> 構建和運行 -> 運行,在Arguments輸入框中輸入需要傳遞的參數。

為了示範,我傳遞了一個Json對象:{\"UserName\":\"Qter\",\"Password\":\"123456\"}

解析

定義一個結構體,儲存命令列參數對應的值,可根據需要,自行擴充。

struct UserInfo{    QString strUserName;  // 使用者名稱    QString strPassword;  // 密碼};

通過parseArguments來解析命令列參數,主要解析之前設定的Json對象。

#include <QApplication>#include <QJsonDocument>#include <QJsonObject>#include <qDebug>UserInfo g_userInfo = {"", ""};void parseArguments(){    // 擷取命令列參數    QStringList arguments = QCoreApplication::arguments();    qDebug() << "Arguments : " << arguments;    if (arguments.count() < 2)        return;    QString strJson = arguments.at(1);    qDebug() << "Json : " << strJson;    // 解析Json對象    QJsonParseError jsonError;    QJsonDocument doucment = QJsonDocument::fromJson(strJson.toLocal8Bit(), &jsonError);    if (jsonError.error != QJsonParseError::NoError)        return;    if (doucment.isObject())    {        QJsonObject obj = doucment.object();        QJsonValue value;        if (obj.contains("UserName"))        {            value = obj.take("UserName");            if (value.isString())                g_userInfo.strUserName = value.toString();        }        if (obj.contains("Password"))        {            value = obj.take("Password");            if (value.isString())                g_userInfo.strPassword = value.toString();        }    }}int main(int argc, char *argv[]){    QApplication a(argc, argv);    // 解析命令列參數    parseArguments();    // 測試輸出    qDebug() << "UserName : " << g_userInfo.strUserName;    qDebug() << "Password : " << g_userInfo.strPassword;    Widget w;    w.show();    return a.exec();}

輸出資訊如下:

Arguments : ("E:\\Qt\\Test\\build-TestArguments-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\\debug\\TestArguments.exe", "{\"UserName\":\"Qter\",\"Password\":\"123456\"}")
Json : "{\"UserName\":\"Qter\",\"Password\":\"123456\"}"
UserName : "Qter"
Password : "123456"

更多參考
  • Qt之處理序間通訊(QProcess)

Qt之命令列參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.