12,925
回編集
編集の要約なし |
|||
7行目: | 7行目: | ||
<br><br> | <br><br> | ||
== | == QCommandLineParserクラスの使用 == | ||
以下の例では、<code>QCommandLineParser</code>クラスを使用して、指定されたオプションを処理している。<br> | |||
<br> | |||
* QCommandLineParserクラスを使用してコマンドラインオプションを定義する。 | |||
* -hオプション、--helpオプション、-vオプション、--versionオプションは、その後に続く値が不要なため、Qtにより自動的に処理される。 | |||
* -cオプション、--configオプションを追加で定義して、値を受け取るように指定する。 | |||
* 上記に存在しないオプションが指定された場合、それらを表示する。 | |||
<br> | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
#include < | #include <QCoreApplication> | ||
#include < | #include <QCommandLineParser> | ||
#include < | #include <QCommandLineOption> | ||
#include <QDebug> | |||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
{ | { | ||
QCoreApplication | QCoreApplication a(argc, argv); | ||
QCoreApplication::setApplicationName("<任意のアプリケーション名>"); | |||
QCoreApplication::setApplicationVersion("1.0"); | |||
QCommandLineParser parser; | QCommandLineParser parser; | ||
parser.setApplicationDescription( | parser.setApplicationDescription("Command line options example"); | ||
parser. | |||
// バージョンオプション | |||
QCommandLineOption versionOption(QStringList() << "v" << "version", "Displays version information."); | |||
parser.addOption(versionOption); | |||
// ヘルプオプション | |||
QCommandLineOption helpOption(QStringList() << "h" << "help", "Displays help information."); | |||
parser.addOption(helpOption); | |||
QCommandLineOption | // 設定オプション | ||
parser.addOption( | QCommandLineOption configOption(QStringList() << "c" << "config", "Display the configuration string.", "config"); | ||
parser.addOption(configOption); | |||
parser.process(a); | |||
parser. | |||
parser. | if (parser.isSet(helpOption)) { | ||
parser.showHelp(); | |||
return 0; | |||
} | |||
if (parser.isSet( | if (parser.isSet(versionOption)) { | ||
qDebug() << QCoreApplication::applicationName() << QCoreApplication::applicationVersion(); | |||
qDebug() << | return 0; | ||
} | } | ||
if (parser.isSet( | if (parser.isSet(configOption)) { | ||
QString configString = parser.value(configOption); | |||
qDebug() << " | qDebug() << "Configuration: " << configString; | ||
return 0; | |||
} | } | ||
if ( | // 不明なオプションの場合 | ||
QStringList unknownOptions = parser.unknownOptionNames(); | |||
if (!unknownOptions.isEmpty()) { | |||
for (const QString &option : unknownOptions) { | |||
qDebug() << "不明なオプション: " << option; | |||
} | |||
return -1; | |||
} | } | ||
qDebug() << "有効なオプションはありません。使用法については、-h または --help を使用してください。"; | |||
return 0; | return 0; | ||
} | } | ||
54行目: | 75行目: | ||
<br> | <br> | ||
# 実行 | # 実行 | ||
<実行ファイル名> -h または <実行ファイル名> --help | |||
ヘルプ情報を表示する | |||
<実行ファイル名> -v または <実行ファイル名> --version | |||
バージョン情報を表示する | |||
<実行ファイル名> -c "<任意の文字列>" または <実行ファイル名> --config "<任意の文字列>" | |||
指定された設定文字列を表示する | |||
<実行ファイル名> -x | |||
"不明なオプション: x" と表示する | |||
<br> | <br> | ||
<u> | <u>※注意</u><br> | ||
<code>QCommandLineParser</code>クラスは、様々なケースに対応できるような構造になっている。<br> | |||
詳細は、<code>[https://doc.qt.io/qt-5/qcommandlineparser.html QCommandLineParser]</code>と<code>[https://doc.qt.io/qt-5/qcommandlineoption.html QCommandLineOption]</code>のドキュメントを参照すること。<br> | 詳細は、<code>[https://doc.qt.io/qt-5/qcommandlineparser.html QCommandLineParser]</code>と<code>[https://doc.qt.io/qt-5/qcommandlineoption.html QCommandLineOption]</code>のドキュメントを参照すること。<br> | ||
また、他の使用方法については、[https://code.qt.io/cgit/qt/qtbase.git/tree/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp qtbase/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp]のテストケースを参照すること。<br> | また、他の使用方法については、[https://code.qt.io/cgit/qt/qtbase.git/tree/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp qtbase/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp]のテストケースを参照すること。<br> |