我正在使用
QCommandLineParser
,但我不确定如何处理选项的 defaultValue
。这是我到目前为止的片段:
QCommandLineParser parser;
parser.setApplicationDescription("Video Grabber and Streamer");
parser.addOption(QCommandLineOption("streaming.fps", "Frame rate for streaming. Default: 20", "fps", "20"));
parser.process(*QCoreApplication::instance());
据我从doc中了解到:
此外,如果选项需要一个值,则需要设置 valueName。该选项的默认值设置为defaultValue。
我期望如果
--streaming.fps
选项未通过,该选项将出现并设置为 20
。但这并没有发生;如果我通过了就可以了
myapp.exe --streaming.fps 10
parser.optionNames()
包含 streaming.fps
且其值为 10。但是如果我运行:
myapp.exe
然后
parser.optionNames()
为空。
有什么建议吗?
这个问题已经快 10 个月了,但我只是在这个问题上挣扎,所以我回答它。
optionNames()
提供了命令行参数中found的选项名称列表。如果选项未作为命令行参数传入,则这些不包括具有默认值的选项名称。
请注意,您仍然可以使用默认值访问选项,因此在问题中,运行
parser.value("streaming.fps")
时,20
将为 myapp.exe
,即使 parser.optionNames()
将为空。