簡體   English   中英

QCommandLineOption:如何多次解析同一參數?

[英]QCommandLineOption: How to parse the same parameter multiple times?

我正在嘗試使用QCommandLineParser多次解析同一參數。 問題是,當我嘗試解析它們時,它返回一個空的QStringList,這意味着解析器遇到了某種錯誤,即使這些錯誤設置正確。

我以這種方式運行程序: ./dns-benchmark domains.txt -d "208.67.222.222" -d "208.67.220.220"我有一個正確返回的位置參數,但是然后我的-d arent:/

QCoreApplication coreApplication(argc, argv);
QCoreApplication::setApplicationName("dns-benchmark");
QCoreApplication::setApplicationVersion("0.0.1");

QCommandLineParser parser;
parser.setApplicationDescription("Benchmarks a bunch of different DNS servers.");
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument("source", QCoreApplication::translate("main", "Source file containing the domains to resolve."));

QCommandLineOption supplementaryDnsOption(QStringList() << "d" << "dns", "Supplementary DNS to benchmark.", "IPv4 or IPv6 address");
parser.addOption(supplementaryDnsOption);

parser.process(coreApplication);

const QStringList args = parser.positionalArguments();
QString domainsToResolveFilePath = args.at(0);
QLinkedList<QHostAddress> dnsList;

if (parser.isSet(supplementaryDnsOption)) {
   const QStringList supplementaryDns = parser.values(supplementaryDnsOption);

   for (qint8 i = 0; i < supplementaryDns.size() -1; i++) {
       dnsList.append(QHostAddress(supplementaryDns.at(i)));
   }
}

但是我的const QStringList supplementaryDns完全是空的:/

試試QCommandLineParser::values

#include <QCoreApplication>
#include <QCommandLineParser>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QCommandLineParser parser;

    QCommandLineOption someOption(QStringList() << "p" << "param"
                                              , "some param", "blabla");
    parser.addOption(someOption);

    parser.process(app);

    qDebug() << parser.values(someOption);

    return app.exec();
}

它是通過該參數啟動的:

應用啟動示例

那是你想要的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM