0

我有这个代码:

parser.addOption(requiredValueOption);
parser.addOption(booleanOption);
if (!parser.parse(app->arguments())) {
    qDebug() << parser.errorText();
    parser.showHelp(1);
}

当我这样称呼它时:

./app --required-value-option value

有用。

当我这样称呼它时:

./app --required-value-option

我看到一条错误消息“...之后缺少值”,这是预期的

但是当我这样称呼它时:

./app --required-value-option --boolean-option

该字符串--boolean-option被解释为--required-value-option!!! 这不是我所期望的。这应该会触发错误。

如何使用 QCommandLineParser 正确解析具有所需值的选项?

UPD:如果您在 Qt 应用程序中为选项使用一些必需的值 - 您可以对其进行测试。

UPD2:当前行为例如:--no-gui 布尔选项和--output-file 必需的文件选项。像猴子一样运行它:

app --output-file --no-gui

哇!应用程序以 gui 开头并显示“--no-gui 文件不存在”。干得好人!

UPD3:好的。我想将注册的选项解释为选项,而不是以前选项的值。示例:--no-gui 可以是有效的文件名,但由于这是已注册的选项,解析器不应将其用作值。

4

1 回答 1

1

好的,我回答自我问题。

首先,您必须仅添加和解析布尔选项。存储创建的标志(我将其存储为位掩码并稍后检查)。

然后添加其他带有值的选项并再解析一个。

现在您已经解析了布尔选项并解析了带有值的选项。

完全的!

于 2017-04-09T00:22:05.133 回答