我想定义一个带有可选值的命令行选项。例如:
QCommandLineOption pngOption("png",
QCoreApplication::translate("main", "Generate PNG diagrams."),
"items", "*");
我想使用此选项如下:
myApp --png diagrams
myApp --png
第二种用法是--png没有值(可选值)并导致错误“--png后丢失值”。我认为在这种情况下,选项的值应该设置为QCommandLineOption构造函数的defaultValue参数,该参数以“*”提供。但显然,Qt并没有这样做。
所以,我的问题是:
问题是您为选项提供了值而不使用任何参数和位置选项的选项。
这是来自Qt documentation的副本,并经过调整以匹配您的代码:
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();
parser.addVersionOption();
parser.addPositionalArgument("source", QCoreApplication::translate("main", "Source file."));
// A boolean option with a single name (-p)
QCommandLineOption generatePNGdiagrams("png", QCoreApplication::translate("main", "Generate PNG diagrams."));
parser.addOption(generatePNGdiagrams);
parser.process(app);
const QStringList args = parser.positionalArguments();
const QString filename = args.at(0);
bool shouldGeneratePNGdiagrams = parser.isSet(generatePNGdiagrams);
// ...
}