QCommandLineParser Class

Die Klasse QCommandLineParser bietet ein Mittel zur Handhabung von Kommandozeilenoptionen. Mehr...

Kopfzeile: #include <QCommandLineParser>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Öffentliche Typen

enum OptionsAfterPositionalArgumentsMode { ParseAsOptions, ParseAsPositionalArguments }
enum SingleDashWordOptionMode { ParseAsCompactedShortOptions, ParseAsLongOptions }

Öffentliche Funktionen

QCommandLineParser()
~QCommandLineParser()
QCommandLineOption addHelpOption()
bool addOption(const QCommandLineOption &option)
bool addOptions(const QList<QCommandLineOption> &options)
void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString())
QCommandLineOption addVersionOption()
QString applicationDescription() const
void clearPositionalArguments()
QString errorText() const
QString helpText() const
bool isSet(const QString &name) const
bool isSet(const QCommandLineOption &option) const
QStringList optionNames() const
bool parse(const QStringList &arguments)
QStringList positionalArguments() const
void process(const QStringList &arguments)
void process(const QCoreApplication &app)
void setApplicationDescription(const QString &description)
void setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode parsingMode)
void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode)
void showHelp(int exitCode = 0)
void showVersion()
QStringList unknownOptionNames() const
QString value(const QString &optionName) const
QString value(const QCommandLineOption &option) const
QStringList values(const QString &optionName) const
QStringList values(const QCommandLineOption &option) const

Detaillierte Beschreibung

QCoreApplication QCommandLineParser stellt die Kommandozeilenargumente als einfache Liste von Strings zur Verfügung. QCommandLineParser bietet die Möglichkeit, einen Satz von Optionen zu definieren, die Befehlszeilenargumente zu analysieren und zu speichern, welche Optionen tatsächlich verwendet wurden, sowie die Optionswerte.

Jedes Argument, das keine Option ist (d.h. nicht mit einem - beginnt), wird als "Positionsargument" gespeichert.

Der Parser behandelt kurze Namen, lange Namen, mehr als einen Namen für dieselbe Option und Optionswerte.

Optionen in der Befehlszeile werden so erkannt, dass sie mit einem oder zwei - Zeichen beginnen, gefolgt vom Optionsnamen. Die Option - (nur ein Bindestrich) ist ein Sonderfall und bedeutet oft Standardeingabe und wird nicht als Option behandelt. Der Parser behandelt alles nach der Option -- (doppelter Bindestrich) als positionale Argumente.

Kurze Optionen sind einzelne Buchstaben. Die Option v würde durch die Übergabe von -v in der Befehlszeile angegeben werden. Im Standard-Parsing-Modus können kurze Optionen in einer kompakten Form geschrieben werden, z. B. ist -abc gleichbedeutend mit -a -b -c. Der Parsing-Modus kann auf ParseAsLongOptions geändert werden, in diesem Fall wird -abc als lange Option abc geparst.

Lange Optionen sind mehr als einen Buchstaben lang und können nicht zusammen geparst werden. Die lange Option verbose würde als --verbose oder -verbose übergeben werden.

Die Übergabe von Werten an Optionen kann mit dem Zuweisungsoperator (-v=value, --verbose=value) oder mit einem Leerzeichen (-v value, --verbose value) erfolgen. Dies funktioniert auch, wenn der Wert mit einem - beginnt.

Der Parser unterstützt keine optionalen Werte - wenn eine Option so eingestellt ist, dass sie einen Wert erfordert, muss ein solcher vorhanden sein. Wenn eine solche Option an letzter Stelle steht und keinen Wert hat, wird die Option so behandelt, als ob sie nicht angegeben worden wäre.

Der Parser unterstützt nicht automatisch die Negierung oder Deaktivierung langer Optionen durch Verwendung des Formats --disable-option oder --no-option. Es ist jedoch möglich, diesen Fall explizit zu behandeln, indem man eine Option mit no-option als einen ihrer Namen erstellt und die Option explizit behandelt.

Beispiel:

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 to copy."));
    parser.addPositionalArgument("destination", QCoreApplication::translate("main", "Destination directory."));

    // A boolean option with a single name (-p)
    QCommandLineOption showProgressOption("p", QCoreApplication::translate("main", "Show progress during copy"));
    parser.addOption(showProgressOption);

    // A boolean option with multiple names (-f, --force)
    QCommandLineOption forceOption(QStringList() << "f" << "force",
            QCoreApplication::translate("main", "Overwrite existing files."));
    parser.addOption(forceOption);

    // An option with a value
    QCommandLineOption targetDirectoryOption(QStringList() << "t" << "target-directory",
            QCoreApplication::translate("main", "Copy all source files into <directory>."),
            QCoreApplication::translate("main", "directory"));
    parser.addOption(targetDirectoryOption);

    // Process the actual command line arguments given by the user
    parser.process(app);

    const QStringList args = parser.positionalArguments();
    // source is args.at(0), destination is args.at(1)

    bool showProgress = parser.isSet(showProgressOption);
    bool force = parser.isSet(forceOption);
    QString targetDir = parser.value(targetDirectoryOption);
    // ...
}

Die drei addOption()-Aufrufe im obigen Beispiel können durch die Verwendung von addOptions() kompakter gestaltet werden:

    parser.addOptions({
        // A boolean option with a single name (-p)
        {"p",
            QCoreApplication::translate("main", "Show progress during copy")},
        // A boolean option with multiple names (-f, --force)
        {{"f", "force"},
            QCoreApplication::translate("main", "Overwrite existing files.")},
        // An option with a value
        {{"t", "target-directory"},
            QCoreApplication::translate("main", "Copy all source files into <directory>."),
            QCoreApplication::translate("main", "directory")},
    });

Bekannte Einschränkung: Das Parsen von Qt-Optionen innerhalb von QCoreApplication und Unterklassen findet statt, bevor QCommandLineParser existiert, daher kann es nicht berücksichtigt werden. Das bedeutet, dass jeder Optionswert, der wie eine eingebaute Qt-Option aussieht, von QCoreApplication wie eine eingebaute Qt-Option behandelt wird. Beispiel: --profile -reverse wird dazu führen, dass QGuiApplication die Option -reverse gesetzt sieht und sie aus QCoreApplication::arguments() entfernt, bevor QCommandLineParser die Option profile definiert und die Kommandozeile analysiert.

Wie man QCommandLineParser in komplexen Anwendungen verwendet

In der Praxis müssen zusätzliche Fehlerprüfungen für die Positionsargumente und Optionswerte durchgeführt werden. Zum Beispiel sollten Zahlenbereiche überprüft werden.

Es ist dann ratsam, eine Funktion einzuführen, die das Parsen der Befehlszeile durchführt und eine Struktur oder Klasse annimmt, die die Optionswerte erhält und ein Objekt zurückgibt, das das Ergebnis darstellt. Das Beispiel dnslookup des Moduls QtNetwork veranschaulicht dies:

struct DnsQuery
{
    DnsQuery() : type(QDnsLookup::A) {}

    QDnsLookup::Type type;
    QHostAddress nameServer;
    QString name;
};

struct CommandLineParseResult
{
    enum class Status {
        Ok,
        Error,
        VersionRequested,
        HelpRequested
    };
    Status statusCode = Status::Ok;
    std::optional<QString> errorString = std::nullopt;
};

CommandLineParseResult parseCommandLine(QCommandLineParser &parser, DnsQuery *query)
{
    using Status = CommandLineParseResult::Status;

    parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
    const QCommandLineOption nameServerOption("n", "The name server to use.", "nameserver");
    parser.addOption(nameServerOption);
    const QCommandLineOption typeOption("t", "The lookup type.", "type");
    parser.addOption(typeOption);
    parser.addPositionalArgument("name", "The name to look up.");
    const QCommandLineOption helpOption = parser.addHelpOption();
    const QCommandLineOption versionOption = parser.addVersionOption();

    if (!parser.parse(QCoreApplication::arguments()))
        return { Status::Error, parser.errorText() };

    if (parser.isSet(versionOption))
        return { Status::VersionRequested };

    if (parser.isSet(helpOption))
        return { Status::HelpRequested };

    if (parser.isSet(nameServerOption)) {
        const QString nameserver = parser.value(nameServerOption);
        query->nameServer = QHostAddress(nameserver);
        if (query->nameServer.isNull()
            || query->nameServer.protocol() == QAbstractSocket::UnknownNetworkLayerProtocol) {
            return { Status::Error,
                     u"Bad nameserver address: %1"_s.arg(nameserver) };
        }
    }

    if (parser.isSet(typeOption)) {
        const QString typeParameter = parser.value(typeOption);
        if (std::optional<QDnsLookup::Type> type = typeFromParameter(typeParameter))
            query->type = *type;
        else
            return { Status::Error, u"Bad record type: %1"_s.arg(typeParameter) };
    }

    const QStringList positionalArguments = parser.positionalArguments();
    if (positionalArguments.isEmpty())
        return { Status::Error, u"Argument 'name' missing."_s };
    if (positionalArguments.size() > 1)
        return { Status::Error, u"Several 'name' arguments specified."_s };
    query->name = positionalArguments.first();

    return { Status::Ok };
}

In der Hauptfunktion sollte die Hilfe auf der Standardausgabe ausgegeben werden, wenn die Option help übergeben wurde, und die Anwendung sollte den Exit-Code 0 zurückgeben.

Wurde ein Fehler festgestellt, sollte die Fehlermeldung auf die Standard-Fehlerausgabe ausgegeben werden und die Anwendung sollte einen Exit-Code ungleich 0 zurückgeben.

    QCoreApplication::setApplicationVersion(QT_VERSION_STR);
    QCoreApplication::setApplicationName(QCoreApplication::translate("QDnsLookupExample",
                                                                     "DNS Lookup Example"));
    QCommandLineParser parser;
    parser.setApplicationDescription(QCoreApplication::translate("QDnsLookupExample",
                                                                 "An example demonstrating the "
                                                                 "class QDnsLookup."));
    DnsQuery query;
    using Status = CommandLineParseResult::Status;
    CommandLineParseResult parseResult = parseCommandLine(parser, &query);
    switch (parseResult.statusCode) {
    case Status::Ok:
        break;
    case Status::Error:
        std::fputs(qPrintable(parseResult.errorString.value_or(u"Unknown error occurred"_s)),
                   stderr);
        std::fputs("\n\n", stderr);
        std::fputs(qPrintable(parser.helpText()), stderr);
        return 1;
    case Status::VersionRequested:
        parser.showVersion();
        Q_UNREACHABLE_RETURN(0);
    case Status::HelpRequested:
        parser.showHelp();
        Q_UNREACHABLE_RETURN(0);
    }

Ein Sonderfall sind GUI-Anwendungen auf Windows und mobilen Plattformen. Diese Anwendungen können die Standardausgabe oder Fehlerkanäle nicht verwenden, da die Ausgabe entweder verworfen wird oder nicht zugänglich ist.

Unter Windows verwendet QCommandLineParser Meldungsboxen, um Nutzungsinformationen und Fehler anzuzeigen, wenn kein Konsolenfenster verfügbar ist. Diese Meldungsboxen können durch Setzen der Umgebungsvariablen QT_COMMAND_LINE_PARSER_NO_GUI_MESSAGE_BOXES ausgeschaltet werden.

Für andere Plattformen wird empfohlen, Hilfetexte und Fehlermeldungen mit QMessageBox anzuzeigen. Um die Formatierung des Hilfetextes zu erhalten, sollte Rich Text mit <pre> Elementen verwendet werden:

switch (parseResult.statusCode) {
case Status::Ok:
    break;
case Status::Error: {
    QString errorMessage = parseResult.errorString.value_or(u"Unknown error occurred"_qs);
    QMessageBox::warning(0, QGuiApplication::applicationDisplayName(),
                         "<html><head/><body><h2>" + errorMessage + "</h2><pre>"
                         + parser.helpText() + "</pre></body></html>");
    return 1;
}
case Status::VersionRequested:
    QMessageBox::information(0, QGuiApplication::applicationDisplayName(),
                             QGuiApplication::applicationDisplayName() + ' '
                             + QCoreApplication::applicationVersion());
    return 0;
case Status::HelpRequested:
    QMessageBox::warning(0, QGuiApplication::applicationDisplayName(),
                         "<html><head/><body><pre>"
                         + parser.helpText() + "</pre></body></html>");
    return 0;
}

Dies gilt jedoch nicht für das dnslookup-Beispiel, da es sich um eine Konsolenanwendung handelt.

Siehe auch QCommandLineOption und QCoreApplication.

Dokumentation der Mitgliedstypen

enum QCommandLineParser::OptionsAfterPositionalArgumentsMode

Diese Aufzählung beschreibt, wie der Parser Optionen interpretiert, die nach Positionsargumenten auftreten.

KonstanteWertBeschreibung
QCommandLineParser::ParseAsOptions0application argument --opt -t wird so interpretiert, dass die Optionen opt und t gesetzt werden, genau wie es application --opt -t argument tun würde. Dies ist der Standard-Parsing-Modus. Um anzugeben, dass --opt und -t stattdessen Positionsargumente sind, kann der Benutzer -- verwenden, wie in application argument -- --opt -t.
QCommandLineParser::ParseAsPositionalArguments1application argument --opt wird so interpretiert, als hätte es zwei Positionsargumente, argument und --opt. Dieser Modus ist nützlich für ausführbare Programme, die darauf abzielen, andere ausführbare Programme zu starten (z. B. Wrapper, Debugging-Tools usw.) oder die interne Befehle, gefolgt von Optionen für den Befehl, unterstützen. argument ist der Name des Befehls, und alle Optionen, die nach ihm auftreten, können von einem anderen Befehlszeilenparser gesammelt und geparst werden, möglicherweise in einem anderen ausführbaren Programm.

Siehe auch setOptionsAfterPositionalArgumentsMode().

enum QCommandLineParser::SingleDashWordOptionMode

Diese Aufzählung beschreibt die Art und Weise, wie der Parser Befehlszeilenoptionen interpretiert, die einen einzelnen Bindestrich gefolgt von mehreren Buchstaben verwenden, wie -abc.

KonstanteWertBeschreibung
QCommandLineParser::ParseAsCompactedShortOptions0-abc wird als -a -b -c interpretiert, d.h. als drei kurze Optionen, die auf der Kommandozeile verdichtet wurden, wenn keine der Optionen einen Wert annimmt. Wenn a einen Wert annimmt, wird es als -a bc interpretiert, d. h. als die Kurzoption a gefolgt von dem Wert bc. Dies wird typischerweise in Tools verwendet, die sich wie Compiler verhalten, um Optionen wie -DDEFINE=VALUE oder -I/include/path zu behandeln. Dies ist der Standard-Parsing-Modus. Neuen Anwendungen wird empfohlen, diesen Modus zu verwenden.
QCommandLineParser::ParseAsLongOptions1-abc wird als --abc interpretiert, d.h. als die lange Option namens abc. Dies ist die Art und Weise, wie Qt's eigene Werkzeuge (uic, rcc...) Argumente immer geparst haben. Dieser Modus sollte verwendet werden, um die Kompatibilität mit Anwendungen zu bewahren, die Argumente auf diese Art und Weise parsen. Es gibt eine Ausnahme, wenn die Option a das Flag QCommandLineOption::ShortOptionStyle gesetzt hat, in diesem Fall wird sie weiterhin als -a bc interpretiert.

Siehe auch setSingleDashWordOptionMode().

Dokumentation der Mitgliedsfunktionen

QCommandLineParser::QCommandLineParser()

Konstruiert ein Kommandozeilen-Parser-Objekt.

[noexcept] QCommandLineParser::~QCommandLineParser()

Zerstört das Kommandozeilen-Parser-Objekt.

QCommandLineOption QCommandLineParser::addHelpOption()

Fügt dem Befehlszeilenparser Hilfeoptionen hinzu.

Die für diese Befehlszeile angegebenen Optionen werden durch -h oder --help beschrieben. Unter Windows wird auch die Alternative -? unterstützt. Die Option --help-all erweitert diese, um generische Qt-Optionen, die nicht durch diesen Befehl definiert sind, in die Ausgabe aufzunehmen.

Diese Optionen werden automatisch von QCommandLineParser behandelt.

Denken Sie daran, setApplicationDescription() zu verwenden, um die Anwendungsbeschreibung zu setzen, die angezeigt wird, wenn diese Option verwendet wird.

Beispiel:

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 to copy."));
    parser.addPositionalArgument("destination", QCoreApplication::translate("main", "Destination directory."));

    // A boolean option with a single name (-p)
    QCommandLineOption showProgressOption("p", QCoreApplication::translate("main", "Show progress during copy"));
    parser.addOption(showProgressOption);

    // A boolean option with multiple names (-f, --force)
    QCommandLineOption forceOption(QStringList() << "f" << "force",
            QCoreApplication::translate("main", "Overwrite existing files."));
    parser.addOption(forceOption);

    // An option with a value
    QCommandLineOption targetDirectoryOption(QStringList() << "t" << "target-directory",
            QCoreApplication::translate("main", "Copy all source files into <directory>."),
            QCoreApplication::translate("main", "directory"));
    parser.addOption(targetDirectoryOption);

    // Process the actual command line arguments given by the user
    parser.process(app);

    const QStringList args = parser.positionalArguments();
    // source is args.at(0), destination is args.at(1)

    bool showProgress = parser.isSet(showProgressOption);
    bool force = parser.isSet(forceOption);
    QString targetDir = parser.value(targetDirectoryOption);
    // ...
}

Gibt die Optionsinstanz zurück, die für den Aufruf von isSet() verwendet werden kann.

bool QCommandLineParser::addOption(const QCommandLineOption &option)

Fügt die Option option hinzu, nach der beim Parsen gesucht werden soll.

Gibt true zurück, wenn das Hinzufügen der Option erfolgreich war; andernfalls wird false zurückgegeben.

Das Hinzufügen der Option schlägt fehl, wenn kein Name an die Option angehängt ist oder die Option einen Namen hat, der mit einem zuvor hinzugefügten Optionsnamen kollidiert.

bool QCommandLineParser::addOptions(const QList<QCommandLineOption> &options)

Fügt die Optionen hinzu, nach denen beim Parsen gesucht werden soll. Die Optionen werden durch den Parameter options angegeben.

Gibt true zurück, wenn das Hinzufügen aller Optionen erfolgreich war; andernfalls wird false zurückgegeben.

In der Dokumentation zu addOption() ist beschrieben, wann diese Funktion fehlschlagen kann.

void QCommandLineParser::addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString())

Definiert ein zusätzliches Argument für die Anwendung, das im Hilfetext verwendet wird.

Die Argumente name und description werden unter dem Abschnitt Arguments: in der Hilfe erscheinen. Wenn syntax angegeben ist, wird es an die Zeile Usage angehängt, andernfalls wird name angehängt.

Beispiel:

// Usage: image-editor file
//
// Arguments:
//   file                  The file to open.
parser.addPositionalArgument("file", QCoreApplication::translate("main", "The file to open."));

// Usage: web-browser [urls...]
//
// Arguments:
//   urls                URLs to open, optionally.
parser.addPositionalArgument("urls", QCoreApplication::translate("main", "URLs to open, optionally."), "[urls...]");

// Usage: cp source destination
//
// Arguments:
//   source                Source file to copy.
//   destination           Destination directory.
parser.addPositionalArgument("source", QCoreApplication::translate("main", "Source file to copy."));
parser.addPositionalArgument("destination", QCoreApplication::translate("main", "Destination directory."));

Siehe auch addHelpOption() und helpText().

QCommandLineOption QCommandLineParser::addVersionOption()

Fügt die Option -v / --version hinzu, die den Versionsstring der Anwendung anzeigt.

Diese Option wird automatisch von QCommandLineParser behandelt.

Sie können die aktuelle Versionszeichenfolge mit QCoreApplication::setApplicationVersion() setzen.

Gibt die Optionsinstanz zurück, die für den Aufruf von isSet() verwendet werden kann.

QString QCommandLineParser::applicationDescription() const

Gibt die in setApplicationDescription() eingestellte Anwendungsbeschreibung zurück.

Siehe auch setApplicationDescription().

void QCommandLineParser::clearPositionalArguments()

Löscht die Definitionen von zusätzlichen Argumenten aus dem Hilfetext.

Dies ist nur für den speziellen Fall von Werkzeugen erforderlich, die mehrere Befehle mit unterschiedlichen Optionen unterstützen. Sobald der eigentliche Befehl identifiziert ist, können die Optionen für diesen Befehl definiert werden, und der Hilfetext für den Befehl kann entsprechend angepasst werden.

Beispiel:

QCoreApplication app(argc, argv);
QCommandLineParser parser;

parser.addPositionalArgument("command", "The command to execute.");

// Call parse() to find out the positional arguments.
parser.parse(QCoreApplication::arguments());

const QStringList args = parser.positionalArguments();
const QString command = args.isEmpty() ? QString() : args.first();
if (command == "resize") {
    parser.clearPositionalArguments();
    parser.addPositionalArgument("resize", "Resize the object to a new size.", "resize [resize_options]");
    parser.addOption(QCommandLineOption("size", "New size.", "new_size"));
    parser.process(app);
    // ...
}

/*
This code results in context-dependent help:

$ tool --help
Usage: tool command

Arguments:
  command  The command to execute.

$ tool resize --help
Usage: tool resize [resize_options]

Options:
  --size <size>  New size.

Arguments:
  resize         Resize the object to a new size.
*/

QString QCommandLineParser::errorText() const

Gibt einen übersetzten Fehlertext für den Benutzer zurück. Dies sollte nur aufgerufen werden, wenn parse() false zurückgibt.

QString QCommandLineParser::helpText() const

Gibt eine Zeichenkette mit den vollständigen Hilfeinformationen zurück.

Siehe auch showHelp().

bool QCommandLineParser::isSet(const QString &name) const

Prüft, ob die Option name an die Anwendung übergeben wurde.

Gibt true zurück, wenn die Option name gesetzt wurde, andernfalls false.

Der angegebene Name kann ein beliebiger langer oder kurzer Name einer beliebigen Option sein, die mit addOption() hinzugefügt wurde. Alle Optionsnamen werden als gleichwertig behandelt. Wenn der Name nicht erkannt wird oder die Option nicht vorhanden war, wird false zurückgegeben.

Beispiel:

bool verbose = parser.isSet("verbose");

bool QCommandLineParser::isSet(const QCommandLineOption &option) const

Dies ist eine überladene Funktion.

Prüft, ob die option an die Anwendung übergeben wurde.

Gibt true zurück, wenn option gesetzt wurde, andernfalls false.

Dies ist der empfohlene Weg, um nach Optionen ohne Werte zu suchen.

Beispiel:

QCoreApplication app(argc, argv);
QCommandLineParser parser;
QCommandLineOption verboseOption("verbose");
parser.addOption(verboseOption);
parser.process(app);
bool verbose = parser.isSet(verboseOption);

QStringList QCommandLineParser::optionNames() const

Gibt eine Liste der Optionsnamen zurück, die gefunden wurden.

Gibt eine Liste aller erkannten Optionsnamen zurück, die vom Parser gefunden wurden, und zwar in der Reihenfolge, in der sie gefunden wurden. Bei langen Optionen in der Form {-option=wert} wurde der Wertteil weggelassen.

Die Namen in dieser Liste enthalten nicht die vorangestellten Bindestriche. Namen können mehrfach in dieser Liste erscheinen, wenn sie vom Parser mehr als einmal gefunden wurden.

Jeder Eintrag in der Liste kann mit value() oder mit values() verwendet werden, um alle relevanten Optionswerte zu erhalten.

bool QCommandLineParser::parse(const QStringList &arguments)

Analysiert die Befehlszeile arguments.

Die meisten Programme brauchen dies nicht aufzurufen, ein einfacher Aufruf von process() ist ausreichend.

parse() ist eher auf niedriger Ebene angesiedelt und führt nur das Parsing durch. Die Anwendung muss sich um die Fehlerbehandlung kümmern und errorText() verwenden, wenn parse() false zurückgibt. Dies kann zum Beispiel nützlich sein, um in grafischen Programmen eine grafische Fehlermeldung anzuzeigen.

Der Aufruf von parse() anstelle von process() kann auch nützlich sein, um unbekannte Optionen vorübergehend zu ignorieren, denn weitere Optionsdefinitionen werden später (abhängig von einem der Argumente) bereitgestellt, bevor process() aufgerufen wird.

Vergessen Sie nicht, dass arguments mit dem Namen der ausführbaren Datei beginnen muss (wird aber ignoriert).

Gibt false zurück, wenn ein Parse-Fehler vorliegt (unbekannte Option oder fehlender Wert); andernfalls wird true zurückgegeben.

Siehe auch process().

QStringList QCommandLineParser::positionalArguments() const

Gibt eine Liste von Positionsargumenten zurück.

Dies sind alle Argumente, die nicht als Teil einer Option erkannt wurden.

void QCommandLineParser::process(const QStringList &arguments)

Verarbeitet die Befehlszeile arguments.

Zusätzlich zum Parsen der Optionen (wie parse()) behandelt diese Funktion auch die eingebauten Optionen und behandelt Fehler.

Die eingebauten Optionen sind --version, wenn addVersionOption aufgerufen wurde, und --help / --help-all, wenn addHelpOption aufgerufen wurde.

Wenn eine dieser Optionen aufgerufen wird oder ein Fehler auftritt (z. B. wenn eine unbekannte Option übergeben wurde), wird der aktuelle Prozess mit der Funktion exit() beendet.

Siehe auch QCoreApplication::arguments() und parse().

void QCommandLineParser::process(const QCoreApplication &app)

Dies ist eine überladene Funktion.

Die Befehlszeile wird von der Instanz QCoreApplication app bezogen.

void QCommandLineParser::setApplicationDescription(const QString &description)

Legt die Anwendung description fest, die von helpText() angezeigt wird.

Siehe auch applicationDescription().

void QCommandLineParser::setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode parsingMode)

Setzt den Parsing-Modus auf parsingMode. Dies muss vor process() oder parse() aufgerufen werden.

void QCommandLineParser::setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode)

Setzt den Parsing-Modus auf singleDashWordOptionMode. Dieser Aufruf muss vor process() oder parse() erfolgen.

void QCommandLineParser::showHelp(int exitCode = 0)

Zeigt die Hilfeinformationen an und beendet die Anwendung. Dies wird automatisch durch die Option -help ausgelöst, kann aber auch verwendet werden, um die Hilfe anzuzeigen, wenn der Benutzer die Anwendung nicht korrekt aufruft. Der Exit-Code wird auf exitCode gesetzt. Er sollte auf 0 gesetzt werden, wenn der Benutzer die Hilfe sehen wollte, und auf einen beliebigen anderen Wert im Falle eines Fehlers.

Siehe auch helpText().

void QCommandLineParser::showVersion()

Zeigt die Versionsinformationen von QCoreApplication::applicationVersion() an und beendet die Anwendung. Dies wird automatisch durch die Option -version ausgelöst, kann aber auch verwendet werden, um die Version anzuzeigen, wenn process() nicht verwendet wird. Der Exit-Code wird auf EXIT_SUCCESS (0) gesetzt.

Siehe auch addVersionOption().

QStringList QCommandLineParser::unknownOptionNames() const

Gibt eine Liste der unbekannten Optionsnamen zurück.

Diese Liste enthält sowohl Optionen mit langem als auch mit kurzem Namen, die nicht erkannt wurden. Bei langen Optionen, die in der Form {-option=wert} vorlagen, wurde der Wertteil weggelassen und nur der lange Name hinzugefügt.

Die Namen in dieser Liste enthalten nicht die vorangestellten Bindestriche. Namen können mehrfach in dieser Liste erscheinen, wenn sie vom Parser mehr als einmal angetroffen wurden.

Siehe auch optionNames().

QString QCommandLineParser::value(const QString &optionName) const

Gibt den Optionswert zurück, der für den angegebenen Optionsnamen optionName gefunden wurde, oder einen leeren String, wenn er nicht gefunden wurde.

Der angegebene Name kann ein beliebiger langer oder kurzer Name einer beliebigen Option sein, die mit addOption() hinzugefügt wurde. Alle Optionsnamen werden als gleichwertig behandelt. Wenn der Name nicht erkannt wird oder die Option nicht vorhanden war, wird eine leere Zeichenkette zurückgegeben.

Für Optionen, die vom Parser gefunden wurden, wird der letzte für diese Option gefundene Wert zurückgegeben. Wenn die Option nicht in der Befehlszeile angegeben wurde, wird der Standardwert zurückgegeben.

Wenn die Option keinen Wert annimmt, wird eine Warnung ausgegeben und eine leere Zeichenkette zurückgegeben.

Siehe auch values(), QCommandLineOption::setDefaultValue(), und QCommandLineOption::setDefaultValues().

QString QCommandLineParser::value(const QCommandLineOption &option) const

Dies ist eine überladene Funktion.

Gibt den Optionswert zurück, der für die angegebene option gefunden wurde, oder einen leeren String, wenn er nicht gefunden wurde.

Bei Optionen, die vom Parser gefunden wurden, wird der letzte für diese Option gefundene Wert zurückgegeben. Wenn die Option nicht in der Befehlszeile angegeben wurde, wird der Standardwert zurückgegeben.

Eine leere Zeichenkette wird zurückgegeben, wenn die Option keinen Wert annimmt.

Siehe auch values(), QCommandLineOption::setDefaultValue(), und QCommandLineOption::setDefaultValues().

QStringList QCommandLineParser::values(const QString &optionName) const

Gibt eine Liste der Optionswerte zurück, die für den angegebenen Optionsnamen optionName gefunden wurden, oder eine leere Liste, falls nicht gefunden.

Der angegebene Name kann ein beliebiger langer oder kurzer Name einer beliebigen Option sein, die mit addOption() hinzugefügt wurde. Alle Optionsnamen werden als gleichwertig behandelt. Wenn der Name nicht erkannt wird oder die Option nicht vorhanden war, wird eine leere Liste zurückgegeben.

Bei Optionen, die vom Parser gefunden wurden, enthält die Liste einen Eintrag für jedes Mal, wenn der Parser auf die Option gestoßen ist. Wurde die Option nicht in der Befehlszeile angegeben, werden die Standardwerte zurückgegeben.

Eine leere Liste wird zurückgegeben, wenn die Option keinen Wert annimmt.

Siehe auch value(), QCommandLineOption::setDefaultValue(), und QCommandLineOption::setDefaultValues().

QStringList QCommandLineParser::values(const QCommandLineOption &option) const

Dies ist eine überladene Funktion.

Gibt eine Liste der Optionswerte zurück, die für die angegebene option gefunden wurden, oder eine leere Liste, wenn sie nicht gefunden wurde.

Bei Optionen, die vom Parser gefunden wurden, enthält die Liste einen Eintrag für jedes Mal, wenn der Parser auf die Option gestoßen ist. Wenn die Option nicht in der Befehlszeile angegeben wurde, werden die Standardwerte zurückgegeben.

Eine leere Liste wird zurückgegeben, wenn die Option keinen Wert annimmt.

Siehe auch value(), QCommandLineOption::setDefaultValue(), und QCommandLineOption::setDefaultValues().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.