「Qtの設定 - コマンドライン引数」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == Qt 5.2以降では、<code>[https://doc.qt.io/qt-5/qcommandlineparser.html QCommandLineParser]</code>クラスと<code>[https://doc.qt.io/qt-5/qcommandlineop…」)
 
(Wiki がページ「Qt - コマンドライン引数」を「Qtの設定 - コマンドライン引数」に、リダイレクトを残さずに移動しました)
(相違点なし)

2020年10月13日 (火) 18:26時点における版

概要

Qt 5.2以降では、QCommandLineParserクラスとQCommandLineOptionクラスが追加され、コマンドライン引数の扱いが簡潔になっている。
ここでは、これらのクラスの使用方法について記載する。


サンプルコード

以下のサンプルコードでは、slコマンドのオプションに倣って、-a-l-F-h/–helpを解析している。

 #include <QtCore/QCoreApplication>
 #include <QtCore/QCommandLineParser>
 #include <QtCore/QDebug>
 
 int main(int argc, char *argv[])
 {
    QCoreApplication app(argc, argv);
    app.setApplicationName(QStringLiteral("sl - correct miss typing"));
 
    QCommandLineParser parser;
    parser.setApplicationDescription(QStringLiteral("sl is a highly developed animation program, which corrects your miss typing."));
    parser.addHelpOption();
 
    QCommandLineOption accidents(QStringLiteral("a"), QStringLiteral("It seems some accidents have happened. People give sad cries."));
    parser.addOption(accidents);
 
    QCommandLineOption smaller(QStringLiteral("l"), QStringLiteral("Becomes smaller."));
    parser.addOption(smaller);

    QCommandLineOption fly(QStringLiteral("F"), QStringLiteral("Flies."));
    parser.addOption(fly);
 
    parser.process(app);
 
    if (parser.isSet(accidents))
    {
       qDebug() << "Help!";
    }
 
    if (parser.isSet(smaller))
    {
       qDebug() << "smaller";
    }
 
    if (parser.isSet(fly))
    {
       qDebug() << "I can fly!";
    }
 
    return 0;
 }


# 実行
./sl
./sl -a
./sl -l
./sl -a -l
./sl -al
./sl -h
./sl -S

# 結果
Help!

smaller

Help!
smaller

Help!
smaller

Usage: ./sl [options]
sl is a highly developed animation program, which corrects your miss typing.

Options:
  -h, --help  Displays this help.
  -a          It seems some accidents have happened. People give sad cries.
  -l          Becomes smaller.
  -F          Flies.

Unknown option 'S'.


※備考
様々なケースに対応できるような構造になっている。
詳細は、QCommandLineParserQCommandLineOptionのドキュメントを参照すること。
また、他の使用方法については、qtbase/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cppのテストケースを参照すること。