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,用於保持兼容性。