qt -- QCommandLineParser

QCommandLineParser类提供了一种处理命令行选项的方法。

QCoreApplication以简单字符串列表的形式提供命令行参数。 QCommandLineParser提供了定义一组选项、解析命令行参数和存储实际使用的选项以及选项值的能力。

任何非选项的参数(即不以-开头)都被存储为“位置参数”。

命令行上的选项被识别为以单个或双字符开头。 选项-(单破折号单独)是一种特殊情况,通常意味着标准输入,不被视为一个选项。 解析器将把选项--(双破折号)之后的所有内容视为位置参数。

短选项是单个字母。 选项v将通过在命令行上传递-v来指定。 在默认的解析模式下,短选项可以写成紧凑的形式,例如-abc相当于-a -b -c。解析模式可以设置为ParseAsLongOptions,在这种情况下-abc将被解析为长选项abc。  

长选项的长度超过一个字母,不能压缩在一起。长选项 verbose 将作为 --verbose 或 -verbose 传递。

可以使用赋值运算符 -v=value --verbose=value 或空格:-v value --verbose value 来完成将值传递给选项,即下一个参数用作值(即使它以 -开头)。

解析器不支持可选值 - 如果某个选项设置为需要某个值,则必须存在一个值。如果此类选项放在最后且没有值,则该选项将被视为未指定。

解析器不会通过使用格式--disable-option或--no-option自动支持否定或禁用长选项。 但是,通过将no-option作为一个选项并显式地处理该选项,可以显式地处理这种情况。

int main(int argc, char *argv[]){QCoreApplication app(argc, argv);QCoreApplication::setApplicationName("my-copy-program"); //应用名称QCoreApplication::setApplicationVersion("1.0");    //版本号QCommandLineParser parser;parser.setApplicationDescription("Test helper");  //设置应用程序描述信息parser.addHelpOption();   //添加帮助选项(“-h”或者“--help”)parser.addVersionOption(); //添加版本选项(“-v”或者“--version”)parser.addPositionalArgument("source",QCoreApplication::translate("main", "Source file to copy."));parser.addPositionalArgument("destination",QCoreApplication::translate("main", "Destination directory."));// 具有单个名称的boolean选项(-p)QCommandLineOption showProgressOption("p", QCoreApplication::translate("main", "Show progress during copy"));parser.addOption(showProgressOption);// 具有多个名称的boolean选项(-f, --force) QCommandLineOption forceOption(QStringList() << "f" << "force",QCoreApplication::translate("main", "Overwrite existing files."));parser.addOption(forceOption);// 具有值的选项QCommandLineOption targetDirectoryOption(QStringList() << "t" << "target-directory",QCoreApplication::translate("main", "Copy all source files into ."),QCoreApplication::translate("main", "directory"));parser.addOption(targetDirectoryOption);// 处理用户给出的实际命令行参数parser.process(app);const QStringList args = parser.positionalArguments();// source is args.at(0), destination is args.at(1)bool showProgress = parser.isSet(showProgressOption);bool force = parser.isSet(forceOption);QString targetDir = parser.value(targetDirectoryOption);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部