이 페이지에서

QCommandLineParser Class

QCommandLineParser 클래스는 명령줄 옵션을 처리하는 기능을 제공합니다. 더 보기...

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

공개 유형

(since 6.9) enum class MessageType { Information, Error }
enum OptionsAfterPositionalArgumentsMode { ParseAsOptions, ParseAsPositionalArguments }
enum SingleDashWordOptionMode { ParseAsCompactedShortOptions, ParseAsLongOptions }

공개 함수

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

정적 공용 멤버

(since 6.9) void showMessageAndExit(QCommandLineParser::MessageType type, const QString &message, int exitCode = 0)

상세 설명

QCoreApplication 명령줄 인수를 간단한 문자열 목록으로 제공합니다. QCommandLineParser는 일련의 옵션을 정의하고, 명령줄 인수를 구문 분석하며, 실제로 사용된 옵션과 옵션 값을 저장하는 기능을 제공합니다.

옵션이 아닌(즉, - 로 시작하지 않는) 모든 인수는 "위치 기반 인수"로 저장됩니다.

이 파서는 짧은 이름, 긴 이름, 동일한 옵션에 대한 여러 이름 및 옵션 값을 처리합니다.

명령줄의 옵션은 하나 또는 두 개의 - 문자로 시작하고, 그 뒤에 옵션 이름이 오는 형태로 인식됩니다. - (대시 하나만 있는 경우) 옵션은 특수한 경우로, 대개 표준 입력을 의미하며 옵션으로 취급되지 않습니다. 파서는 -- (대시 두 개) 옵션 뒤의 모든 내용을 위치 인자로 처리합니다.

짧은 옵션은 단일 문자로 구성됩니다. v 옵션은 명령줄에서 -v 을 전달하여 지정할 수 있습니다. 기본 파싱 모드에서는 짧은 옵션을 간결한 형태로 작성할 수 있습니다. 예를 들어, -abc 은 -a -b -c 과 동일합니다. 파싱 모드를 ParseAsLongOptions 로 변경할 수 있으며, 이 경우 -abc 은 긴 옵션인 abc 으로 파싱됩니다.

긴 옵션은 한 글자 이상으로 구성되며, 서로 결합하여 축약할 수 없습니다. 긴 옵션 verbose 는 --verbose 또는 -verbose 형태로 전달됩니다.

옵션에 값을 전달하는 방법은 할당 연산자(-v=value, --verbose=value)를 사용하거나 공백을 사용하는 방법(-v value, --verbose value)이 있습니다. 이 방법은 값이 - 로 시작하는 경우에도 작동합니다.

파서는 선택적 값을 지원하지 않습니다. 즉, 값을 필수로 지정된 옵션의 경우 반드시 값이 있어야 합니다. 이러한 옵션이 마지막에 위치해 있고 값이 없는 경우, 해당 옵션은 지정되지 않은 것으로 간주됩니다.

파서는 --disable-option 또는 --no-option 형식을 사용하여 긴 옵션을 부정하거나 비활성화하는 기능을 자동으로 지원하지 않습니다. 그러나 no-option 을 이름 중 하나로 포함하는 옵션을 만들고, 해당 옵션을 명시적으로 처리함으로써 이 경우를 처리할 수 있습니다.

예시:

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);
    // ...
}

위 예제에서 세 번 호출된 addOption()은 addOptions()을 사용하여 더 간결하게 작성할 수 있습니다:

    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")},
    });

알려진 제한 사항: ` QCoreApplication ` 및 그 하위 클래스 내부의 Qt 옵션 파싱은 `QCommandLineParser`가 생성되기 전에 이루어지므로, 이를 고려할 수 없습니다. 즉, 내장 Qt 옵션처럼 보이는 모든 옵션 값은 ` QCoreApplication `에 의해 내장 Qt 옵션으로 처리됩니다. 예시: ` --profile -reverse `를 실행하면, ` QGuiApplication `에서 `-reverse` 옵션이 설정된 것으로 인식하게 되며, `QCommandLineParser`가 ` profile ` 옵션을 정의하고 명령줄을 파싱하기 전에 ` QCoreApplication::arguments()`에서 해당 옵션을 제거하게 됩니다.

복잡한 애플리케이션에서 QCommandLineParser 사용 방법

실제로는 위치 인자와 옵션 값에 대해 추가적인 오류 검사를 수행해야 합니다. 예를 들어, 숫자 범위를 확인해야 합니다.

이 경우, 옵션 값을 수신하는 구조체나 클래스를 인수로 받아 결과를 나타내는 객체를 반환하는 명령줄 구문 분석 함수를 도입하는 것이 좋습니다. QtNetwork 모듈의 dnslookup 예제가 이를 잘 보여줍니다:

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 };
}

main 함수에서는 help 옵션이 전달된 경우 표준 출력에 도움말 메시지를 출력해야 하며, 애플리케이션은 종료 코드 0을 반환해야 합니다.

오류가 감지된 경우, 오류 메시지를 표준 오류 출력으로 출력해야 하며, 애플리케이션은 0이 아닌 종료 코드를 반환해야 합니다.

    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);
    }

여기서 고려해야 할 특별한 경우는 Windows 및 모바일 플랫폼의 GUI 애플리케이션입니다. 이러한 애플리케이션은 출력이 무시되거나 접근할 수 없기 때문에 표준 출력 또는 오류 채널을 사용하지 않을 수 있습니다.

Windows에서 QCommandLineParser는 콘솔 창을 확보할 수 없는 경우 메시지 상자를 사용하여 사용법 정보와 오류를 표시합니다. 이 메시지 상자는 ` QT_COMMAND_LINE_PARSER_NO_GUI_MESSAGE_BOXES ` 환경 변수를 설정하여 생략할 수 있습니다.

다른 플랫폼의 경우, ` QMessageBox`을 사용하여 도움말 텍스트와 오류 메시지를 표시하는 것이 권장됩니다. 도움말 텍스트의 서식을 유지하려면 ` <pre> ` 요소가 포함된 리치 텍스트를 사용해야 합니다:

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;
}

그러나 dnslookup 예제의 경우 콘솔 애플리케이션이므로 이 내용은 적용되지 않습니다.

QCommandLineOption 및 QCoreApplication도 참조하십시오 .

멤버 유형 문서

[since 6.9] enum class QCommandLineParser::MessageType

이 열거형은 메시지의 유형과 사용자에게 표시되는 방식을 지정하는 데 사용됩니다.

상수값설명
QCommandLineParser::MessageType::Information0정보 메시지를 표시하는 데 사용됩니다. 메시지는 stdout 에 출력됩니다.
QCommandLineParser::MessageType::Error1오류 메시지를 표시하는 데 사용됩니다. 메시지는 ` stderr`에 출력됩니다.

이 열거형은 Qt 6.9에서 도입되었습니다.

showMessageAndExit()도 참조하십시오 .

enum QCommandLineParser::OptionsAfterPositionalArgumentsMode

이 열거형은 파서가 위치 매개변수 뒤에 나오는 옵션을 해석하는 방식을 설명합니다.

상수값설명
QCommandLineParser::ParseAsOptions0application argument --opt -t 는 application --opt -t argument 와 마찬가지로 opt 및 t 옵션을 설정하는 것으로 해석됩니다. 이것이 기본 파싱 모드입니다. --opt 및 -t 를 위치 인자로 지정하려면, application argument -- --opt -t 와 같이 -- 를 사용할 수 있습니다.
QCommandLineParser::ParseAsPositionalArguments1application argument --opt 는 argument 와 --opt 라는 두 개의 위치 매개변수를 갖는 것으로 해석됩니다. 이 모드는 다른 실행 파일을 실행하는 것을 목적으로 하는 실행 파일(예: 래퍼, 디버깅 도구 등)이나, 내부 명령어 뒤에 해당 명령어에 대한 옵션이 뒤따르는 것을 지원하는 실행 파일에 유용합니다. argument 은 명령어의 이름이며, 그 뒤에 나오는 모든 옵션은 다른 명령줄 파서(다른 실행 파일 내의 파서일 수도 있음)에 의해 수집 및 구문 분석될 수 있습니다.

setOptionsAfterPositionalArgumentsMode()도 참조하십시오 .

enum QCommandLineParser::SingleDashWordOptionMode

이 열거형은 파서가 ‘-’ 한 개 뒤에 여러 글자가 이어지는 명령줄 옵션(예: -abc)을 해석하는 방식을 설명합니다.

상수값설명
QCommandLineParser::ParseAsCompactedShortOptions0-abc 는 -a -b -c, 즉 명령줄에서 압축된 세 개의 짧은 옵션으로 해석됩니다(어떤 옵션도 값을 취하지 않는 경우). a 에 값이 지정된 경우, 이는 -a bc 로 해석됩니다. 즉, 짧은 옵션 a 뒤에 값 bc 이 따라오는 형태로 해석됩니다. 이는 일반적으로 컴파일러와 유사하게 작동하는 도구에서 -DDEFINE=VALUE 또는 -I/include/path 와 같은 옵션을 처리하기 위해 사용됩니다. 이것이 기본 구문 분석 모드입니다. 새로운 애플리케이션에서는 이 모드를 사용하는 것이 권장됩니다.
QCommandLineParser::ParseAsLongOptions1-abc 는 --abc, 즉 abc 라는 긴 옵션으로 해석됩니다. 이는 Qt 자체 도구(uic, rcc 등)가 항상 인수를 파싱해 온 방식입니다. 이 모드는 이러한 방식으로 인수를 파싱하던 애플리케이션의 호환성을 유지하기 위해 사용해야 합니다. 단, ` a ` 옵션에 ` QCommandLineOption::ShortOptionStyle ` 플래그가 설정된 경우는 예외이며, 이 경우 여전히 ` -a bc`로 해석됩니다.

setSingleDashWordOptionMode()도 참조하십시오 .

멤버 함수 문서

QCommandLineParser::QCommandLineParser()

명령줄 파서 객체를 생성합니다.

[noexcept] QCommandLineParser::~QCommandLineParser()

명령줄 파서 객체를 삭제합니다.

QCommandLineOption QCommandLineParser::addHelpOption()

명령줄 파서에 도움말 옵션을 추가합니다.

이 명령줄에 지정된 옵션에 대한 설명은 -h 또는 --help 에서 확인할 수 있습니다. Windows에서는 -? 도 지원됩니다. --help-all 옵션을 사용하면 이 명령에서 정의되지 않은 일반적인 Qt 옵션도 출력에 포함됩니다.

이러한 옵션들은 QCommandLineParser 에 의해 자동으로 처리됩니다.

이 옵션을 사용할 때 표시될 애플리케이션 설명을 설정하려면 setApplicationDescription()을 사용하는 것을 잊지 마십시오.

예:

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);
    // ...
}

isSet()를 호출하는 데 사용할 수 있는 옵션 인스턴스를 반환합니다.

bool QCommandLineParser::addOption(const QCommandLineOption &option)

구문 분석 시 확인할 옵션인 ` option `을 추가합니다.

옵션 추가에 성공하면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

옵션에 이름이 지정되어 있지 않거나, 옵션 이름이 이전에 추가된 옵션 이름과 충돌하는 경우 옵션 추가에 실패합니다.

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

파싱 시 검색할 옵션을 추가합니다. 옵션은 options 매개변수로 지정됩니다.

모든 옵션 추가에 성공하면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

이 함수가 언제 실패할 수 있는지에 대해서는 addOption() 문서를 참조하십시오.

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

도움말 텍스트를 위해 애플리케이션에 추가 인수를 정의합니다.

name 및 description 인수는 도움말의 ' Arguments: ' 섹션에 표시됩니다. syntax 가 지정되면 'Usage' 줄에 이 인수가 추가되며, 그렇지 않은 경우 name 가 추가됩니다.

예:

// 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."));

addHelpOption() 및 helpText()도 참조하십시오 .

QCommandLineOption QCommandLineParser::addVersionOption()

응용 프로그램의 버전 문자열을 표시하는 -v / --version 옵션을 추가합니다.

이 옵션은 QCommandLineParser 에 의해 자동으로 처리됩니다.

QCoreApplication::setApplicationVersion()을 사용하여 실제 버전 문자열을 설정할 수 있습니다.

isSet()를 호출하는 데 사용할 수 있는 옵션 인스턴스를 반환합니다.

QString QCommandLineParser::applicationDescription() const

setApplicationDescription()에서 설정된 애플리케이션 설명을 반환합니다.

setApplicationDescription()도 참조하십시오 .

void QCommandLineParser::clearPositionalArguments()

도움말 텍스트에서 추가 인수의 정의를 제거합니다.

이는 서로 다른 옵션을 가진 여러 명령을 지원하는 도구의 특수한 경우에만 필요합니다. 실제 명령이 식별되면, 해당 명령에 대한 옵션을 정의하고 그에 따라 명령의 도움말 텍스트를 조정할 수 있습니다.

예시:

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

사용자에게 표시할 번역된 오류 메시지를 반환합니다. 이 함수는 parse()이 false 를 반환할 때만 호출되어야 합니다.

QString QCommandLineParser::helpText() const

전체 도움말 정보가 포함된 문자열을 반환합니다.

showHelp()도 참조하십시오 .

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

name 옵션이 애플리케이션에 전달되었는지 확인합니다.

name 옵션이 설정된 경우 true 을 반환하고, 그렇지 않은 경우 false를 반환합니다.

지정된 이름은 addOption()를 통해 추가된 모든 옵션의 긴 이름이나 짧은 이름일 수 있습니다. 모든 옵션 이름은 동등한 것으로 간주됩니다. 이름이 인식되지 않거나 해당 옵션이 존재하지 않는 경우 false를 반환합니다.

예시:

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

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

option 가 애플리케이션에 전달되었는지 확인합니다.

option 가 설정된 경우 true 를 반환하고, 그렇지 않은 경우 false를 반환합니다.

값이 없는 옵션을 확인하는 데 권장되는 방법입니다.

예시:

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

이 함수는 오버로드된 함수입니다.

QStringList QCommandLineParser::optionNames() const

검출된 옵션 이름의 목록을 반환합니다.

이 함수는 파서가 발견한 모든 인식된 옵션 이름의 리스트를, 발견된 순서대로 반환합니다. {–option=value} 형식의 긴 옵션에 대해서는 value 부분이 제거됩니다.

이 리스트에 포함된 이름에는 앞의 대시 문자가 포함되지 않습니다. 파서가 동일한 이름을 두 번 이상 발견한 경우, 해당 이름이 리스트에 여러 번 나타날 수 있습니다.

목록에 포함된 항목은 value() 또는 values()와 함께 사용하여 관련 옵션 값을 가져올 수 있습니다.

bool QCommandLineParser::parse(const QStringList &arguments)

명령줄 arguments 을 구문 분석합니다.

대부분의 프로그램은 이 함수를 호출할 필요가 없으며, process()를 간단히 호출하는 것으로 충분합니다.

parse()는 더 저수준이며, 오직 구문 분석만 수행합니다. parse()가 false 을 반환할 경우, 응용 프로그램은 errorText()를 사용하여 오류 처리를 직접 처리해야 합니다. 이는 예를 들어 그래픽 프로그램에서 그래픽 오류 메시지를 표시하는 데 유용할 수 있습니다.

process() 대신 parse()를 호출하는 것은, process()를 호출하기 전에 (인수 중 하나에 따라) 나중에 더 많은 옵션 정의가 제공될 예정이므로, 알 수 없는 옵션을 일시적으로 무시하는 데에도 유용할 수 있습니다.

arguments 는 실행 파일의 이름으로 시작해야 한다는 점을 잊지 마십시오(비록 무시되지만).

구문 분석 오류(알 수 없는 옵션 또는 누락된 값)가 발생한 경우 false 을 반환하고, 그렇지 않은 경우 true 을 반환합니다.

process()도 참조하십시오 .

QStringList QCommandLineParser::positionalArguments() const

위치 매개변수 목록을 반환합니다.

이들은 옵션의 일부로 인식되지 않은 모든 인자입니다.

void QCommandLineParser::process(const QStringList &arguments)

명령줄 arguments 을 처리합니다.

이 함수는 옵션(예: parse())을 구문 분석하는 것 외에도 내장 옵션을 처리하고 오류를 처리합니다.

내장 옵션은 addVersionOption 가 호출된 경우 --version 이며, addHelpOption 가 호출된 경우 --help / --help-all 입니다.

이러한 옵션 중 하나를 호출하거나 오류가 발생하면(예: 알 수 없는 옵션이 전달된 경우), 현재 프로세스는 exit() 함수를 사용하여 중지됩니다.

QCoreApplication::arguments() 및 parse()도 참조하십시오 .

void QCommandLineParser::process(const QCoreApplication &app)

명령줄은 QCoreApplication 인스턴스 app 에서 가져옵니다.

이는 오버로드된 함수입니다.

void QCommandLineParser::setApplicationDescription(const QString &description)

helpText() 함수에 의해 표시되는 애플리케이션 description 을 설정합니다.

applicationDescription()도 참조하십시오 .

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

구문 분석 모드를 ` parsingMode`로 설정합니다. 이 함수는 ` process()` 또는 ` parse()`를 호출하기 전에 반드시 호출해야 합니다.

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

구문 분석 모드를 ` singleDashWordOptionMode`로 설정합니다. 이 함수는 ` process()` 또는 ` parse()`를 호출하기 전에 반드시 호출되어야 합니다.

void QCommandLineParser::showHelp(int exitCode = 0)

도움말 정보를 표시하고 응용 프로그램을 종료합니다. 이 기능은 –help 옵션을 사용하면 자동으로 실행되지만, 사용자가 응용 프로그램을 올바르게 실행하지 못한 경우에도 도움말을 표시하는 데 사용할 수 있습니다. 종료 코드는 exitCode 로 설정됩니다. 사용자가 도움말을 요청한 경우에는 0으로 설정해야 하며, 오류가 발생한 경우에는 다른 값으로 설정해야 합니다.

helpText() 및 showMessageAndExit()도 참조하십시오 .

[static, since 6.9] void QCommandLineParser::showMessageAndExit(QCommandLineParser::MessageType type, const QString &message, int exitCode = 0)

message 를 표시하고, 지정된 exitCode 로 애플리케이션을 종료합니다.

message 는 일반적으로 지정된 type 에 따라 stdout 또는 stderr 로 직접 출력되거나, 필요한 경우 Windows에서 지정된 type 에 따라 정보 아이콘이나 오류 아이콘과 함께 메시지 상자에 표시될 수 있습니다(메시지 상자를 표시하지 않으려면 QT_COMMAND_LINE_PARSER_NO_GUI_MESSAGE_BOXES 환경 변수를 설정하십시오).

이는 showHelp, showVersion 및 내장 옵션( addVersionOption 이 호출된 경우--version, addHelpOption 이 호출된 경우 --help / --help-all )에서 사용되는 것과 동일한 메시지 표시 방식입니다.

이 함수는 Qt 6.9에서 도입되었습니다.

addVersionOption(), showHelp(), showVersion(), QCommandLineParser::MessageType도 참조하십시오 .

void QCommandLineParser::showVersion()

QCoreApplication::applicationVersion()의 버전 정보를 표시하고, 애플리케이션을 종료합니다. 이 기능은 –version 옵션을 사용할 때 자동으로 실행되지만, process()를 사용하지 않을 때 버전을 표시하는 데에도 사용할 수 있습니다. 종료 코드는 EXIT_SUCCESS(0)로 설정됩니다.

addVersionOption()도 참조하십시오 .

QStringList QCommandLineParser::unknownOptionNames() const

알 수 없는 옵션 이름의 목록을 반환합니다.

이 목록에는 인식되지 않은 긴 이름 및 짧은 이름 옵션이 모두 포함됩니다. {–option=value} 형식의 긴 옵션의 경우, 값 부분은 제거되고 긴 이름만 추가됩니다.

이 목록에 포함된 이름에는 앞의 대시 문자가 포함되지 않습니다. 파서가 동일한 이름을 두 번 이상 감지한 경우, 해당 이름이 목록에 여러 번 나타날 수 있습니다.

optionNames()도 참조하십시오 .

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

지정된 옵션 이름 optionName 에 해당하는 옵션 값을 반환하거나, 해당 값을 찾을 수 없는 경우 빈 문자열을 반환합니다.

제공된 이름은 addOption()을 통해 추가된 모든 옵션의 긴 이름이나 짧은 이름일 수 있습니다. 모든 옵션 이름은 동등하게 취급됩니다. 이름이 인식되지 않거나 해당 옵션이 존재하지 않는 경우, 빈 문자열이 반환됩니다.

파서가 찾아낸 옵션의 경우, 해당 옵션에 대해 마지막으로 발견된 값이 반환됩니다. 명령줄에서 옵션이 지정되지 않은 경우, 기본값이 반환됩니다.

옵션에 값을 지정할 수 없는 경우, 경고 메시지가 출력되고 빈 문자열이 반환됩니다.

values(), QCommandLineOption::setDefaultValue() 및 QCommandLineOption::setDefaultValues()도 참조하십시오 .

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

지정된 ` option`에 대해 발견된 옵션 값을 반환하며, 해당 옵션이 발견되지 않으면 빈 문자열을 반환합니다.

파서가 찾은 옵션의 경우, 해당 옵션에 대해 마지막으로 발견된 값이 반환됩니다. 명령줄에서 옵션이 지정되지 않은 경우 기본값이 반환됩니다.

옵션에 값을 지정할 수 없는 경우에는 빈 문자열이 반환됩니다.

이 함수는 오버로딩된 함수입니다.

values(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues()도 참조하십시오 .

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

지정된 옵션 이름 optionName 에 대해 발견된 옵션 값의 목록을 반환하며, 해당 옵션이 발견되지 않으면 빈 목록을 반환합니다.

제공된 이름은 addOption() 함수를 통해 추가된 모든 옵션의 긴 이름이나 짧은 이름일 수 있습니다. 모든 옵션 이름은 동등한 것으로 간주됩니다. 이름이 인식되지 않거나 해당 옵션이 존재하지 않는 경우, 빈 리스트가 반환됩니다.

파서가 찾은 옵션의 경우, 목록에는 파서가 해당 옵션을 발견한 횟수만큼 항목이 포함됩니다. 명령줄에서 옵션이 지정되지 않은 경우, 기본값이 반환됩니다.

옵션에 값을 지정할 수 없는 경우에는 빈 리스트가 반환됩니다.

value(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues()도 참조하십시오 .

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

지정된 option 에 대해 발견된 옵션 값들의 목록을 반환하거나, 발견되지 않은 경우 빈 목록을 반환합니다.

파서가 찾은 옵션의 경우, 이 리스트에는 파서가 해당 옵션을 발견한 횟수만큼 항목이 포함됩니다. 명령줄에서 옵션이 지정되지 않은 경우, 기본값이 반환됩니다.

옵션에 값을 지정할 수 없는 경우에는 빈 리스트가 반환됩니다.

이 함수는 오버로드된 함수입니다.

value(), QCommandLineOption::setDefaultValue(), QCommandLineOption::setDefaultValues()도 참조하십시오 .

© 2026 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.