0

我正在研究如何解析命令行参数。我找到了这个:

// 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需要一个字符串而不是字符串列表。

但是我怎样才能给两个值加上别名呢?

4

1 回答 1

1

您不为此使用位置参数。位置参数是需要以特定顺序出现的参数,并且可以具有任何值。它们不是用-sor之类的东西引入的参数--source

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

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);
于 2014-12-23T10:00:47.067 回答