QCommandLineParser例子

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QCoreApplication::setApplicationName("Example");
    QCoreApplication::setApplicationVersion("1.0");

    QCommandLineParser parser;
    parser.setApplicationDescription("Test helper");
    
    //添加幫助信息(-h,--help),這個方法由QCommandLineParser自動處理
    parser.addHelpOption();
    
    //添加(-v,--version)方法,顯示應用的版本,這個方法由QCommandLineParser自動處理。
    parser.addVersionOption();

    // 一個bool類型的選項,使用單獨參數(-p)
    QCommandLineOption showProgressOption("p", QCoreApplication::translate("main", "Show progress during copy"));
    parser.addOption(showProgressOption);

    // 一個bool類型的選項,使用參數(-f,--force)
    QCommandLineOption forceOption(QStringList() << "f" << "force",
            QCoreApplication::translate("main", "Overwrite existing files."));
    parser.addOption(forceOption);

    // 一個帶有參數的選項, 使用參數(-t,--targer-directory)
    QCommandLineOption targetDirectoryOption(QStringList() << "t" << "target-directory",
            QCoreApplication::translate("main", "Copy all source files into <directory>."),
            QCoreApplication::translate("main", "directory"));
    parser.addOption(targetDirectoryOption);

    /* 處理命令行參數。
       除了解析選項(如parse())外,此函數還處理內置選項並處理錯誤。
       如果調用了addVersionOption,則內置選項爲--version,如果調用了addHelpOption,則爲--help     --help-all。
       當調用這些選項之一時,或者當發生錯誤(例如,傳遞了未知選項)時,當前進程將使用exit()函數停止。
    */
    parser.process(app);

    //獲取參數的結果
    bool showProgress = parser.isSet(showProgressOption);
    bool force = parser.isSet(forceOption);
    QString targetDir = parser.value(targetDirectoryOption);
    // ...
}

QCommandLineParser::ParseAsCompactedShortOptions :-abc被解釋爲-a,-b,-c。是默認的解析模式。

QCommandLineParser::ParseAsLongOptions : -abc被解釋爲--abc,用於保持兼容性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章