将多个解析值传递给addPositionalArgument函数

时间:2014-12-23 09:49:48

标签: c++ qt qcommandlineparser

我正在寻找how to parse the command line arguments。我发现了这个:

// A boolean option with multiple names (-f, --force)
QCommandLineOption forceOption(QStringList() << "f" << "force",
        QCoreApplication::translate("main", "Overwrite existing files."));
parser.addOption(forceOption);

这很好用。但是如何为字符串值添加两个值?例如,foo --source ...应与foo -s ...相同。

我试过了:

parser.addPositionalArgument(
   QStringList() << "s" << "source",
   QCoreApplication::translate("main", "...")
);

但这会引发错误:

error: no matching function for call to 
'QCommandLineParser::addPositionalArgument(QStringList&, QString)'
parser.addPositionalArgument(QStringList() << "t" << "title",
QCoreApplication::translate("main", "...."));

可能addPositionalArgument需要一个字符串而不是一个字符串列表。

但我如何为两个值添加别名?

1 个答案:

答案 0 :(得分:1)

你没有使用位置论证。位置参数是需要以特定顺序出现的参数,并且可以具有任何值。它们不是-s--source等引入的参数。

正如您已经发现的那样,您可以使用QCommandLineOption中的QStringList对两者进行别名。如果你想要一个参数,只需在构造函数中指定:

QCommandLineOption sourceOption(
    QStringList() << "s" << "source",
    "Specify the source", // better translate that string
    "source", // the name of the following argument
    "something" // the default value of the following argument, not required
);
parser.addOption(sourceOption);