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 <directory>."),
      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);
  }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值