QCommandLineOption具有可选值

问题描述 投票:0回答:1

我想定义一个带有可选值的命令行选项。例如:

QCommandLineOption pngOption("png",
    QCoreApplication::translate("main", "Generate PNG diagrams."),
    "items", "*");

我想使用此选项如下:

myApp --png diagrams
myApp --png

第二种用法是--png没有值(可选值)并导致错误“--png后丢失值”。我认为在这种情况下,选项的值应该设置为QCommandLineOption构造函数的defaultValue参数,该参数以“*”提供。但显然,Qt并没有这样做。

所以,我的问题是:

  • 如何指定带有可选值的选项(例如, - png [items])
  • 无论如何,用于QCommandLineOption构造函数的defaulValue参数是什么?
qt
1个回答
0
投票

问题是您为选项提供了值而不使用任何参数和位置选项的选项。

这是来自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);

    // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.