带有可选值

时间:2018-02-28 20:00:57

标签: qt

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

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

我想按如下方式使用此选项:

myApp --png diagrams
myApp --png

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

所以,我的问题是:

  • 如何指定带有可选值的选项(例如, - png [items])

  • QCommandLineOption的defaulValue参数是什么 无论如何用于构造函数?

1 个答案:

答案 0 :(得分: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);

    // ...
}