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