「Qtの設定 - コマンドライン引数」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
|||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Qt 5.2以降では、<code>[https://doc.qt.io/qt-5/qcommandlineparser.html QCommandLineParser]</code>クラスと<code>[https://doc.qt.io/qt-5/qcommandlineoption.html QCommandLineOption]</code>クラスが追加され、コマンドライン引数の扱いが簡潔になっている。<br> | Qt 5.2以降では、<code>[https://doc.qt.io/qt-5/qcommandlineparser.html QCommandLineParser]</code>クラスと<code>[https://doc.qt.io/qt-5/qcommandlineoption.html QCommandLineOption]</code>クラスが追加され、コマンドライン引数の扱いが簡潔になっている。<br> | ||
また、<code>QCoreApplication</code>クラスの<code>arguments</code>メソッドを使用することでも、コマンドライン引数を扱うことができる。<br> | |||
<br> | |||
ここでは、これらのクラスの使用方法について記載する。<br> | ここでは、これらのクラスの使用方法について記載する。<br> | ||
併せて、デバッグ時のみ使用するコマンドライン引数の設定方法も記載する。<br> | |||
<br><br> | <br><br> | ||
== | == QCommandLineParserクラスとQCommandLineOptionを使用する方法 == | ||
以下のサンプルコードでは、<code>sl</code>コマンドのオプションに倣って、<code>-a</code>、<code>-l</code>、<code>-F</code>、<code>-h/–help</code>を解析している。<br> | 以下のサンプルコードでは、<code>sl</code>コマンドのオプションに倣って、<code>-a</code>、<code>-l</code>、<code>-F</code>、<code>-h/–help</code>を解析している。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
#include <QtCore/QCoreApplication> | #include <QtCore/QCoreApplication> | ||
#include <QtCore/QCommandLineParser> | #include <QtCore/QCommandLineParser> | ||
50行目: | 51行目: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
# 実行 | # 実行 | ||
89行目: | 90行目: | ||
<br><br> | <br><br> | ||
== | == QCoreApplicationクラスを使用する方法 == | ||
上記とは別の方法として、<code>QCoreApplication::arguments()</code>を使用することもできる。<br> | 上記とは別の方法として、<code>QCoreApplication::arguments()</code>を使用することもできる。<br> | ||
<code>QCoreApplication::arguments()</code>の型は<code>QStringList</code>であるため、簡単に取得および加工することができる。<br> | <code>QCoreApplication::arguments()</code>の型は<code>QStringList</code>であるため、簡単に取得および加工することができる。<br> | ||
129行目: | 130行目: | ||
<br><br> | <br><br> | ||
== | == デバッグ時におけるコマンドライン引数の設定 == | ||
# Qt Creatorを起動して、任意のQtプロジェクトを開く。 | # Qt Creatorを起動して、任意のQtプロジェクトを開く。 | ||
# Qt Creatorのメイン画面左にある[プロジェクト]アイコン - [Build & Run]セクション - [Run]項目を選択して、[実行時の設定]画面を表示する。 | # Qt Creatorのメイン画面左にある[プロジェクト]アイコン - [Build & Run]セクション - [Run]項目を選択して、[実行時の設定]画面を表示する。 |
2021年3月10日 (水) 17:48時点における版
概要
Qt 5.2以降では、QCommandLineParser
クラスとQCommandLineOption
クラスが追加され、コマンドライン引数の扱いが簡潔になっている。
また、QCoreApplication
クラスのarguments
メソッドを使用することでも、コマンドライン引数を扱うことができる。
ここでは、これらのクラスの使用方法について記載する。
併せて、デバッグ時のみ使用するコマンドライン引数の設定方法も記載する。
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'.
※備考
様々なケースに対応できるような構造になっている。
詳細は、QCommandLineParser
とQCommandLineOption
のドキュメントを参照すること。
また、他の使用方法については、qtbase/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cppのテストケースを参照すること。
QCoreApplicationクラスを使用する方法
上記とは別の方法として、QCoreApplication::arguments()
を使用することもできる。
QCoreApplication::arguments()
の型はQStringList
であるため、簡単に取得および加工することができる。
以下の3つの例では、全てのコマンドライン引数をQStringList
クラスで取得して表示している。
コマンドライン引数の1つ目の要素を削除している理由は、1つ目の引数にはソフトウェアのパスが渡されるからである。
// 方法 1
QStringList argv = QCoreApplication::arguments();
argv.removeAt(0);
for(QString arg : argv)
{
qDebug() << "argument = " << arg;
}
// 方法 2
QStringList argv = QCoreApplication::arguments();
for(int i = 1; i < arguments.count(); i++)
{
qDebug() << "argument = " << arguments.at(i);
}
// 方法 3
QStringList argv = QCoreApplication::arguments();
argv.removeAt(0);
foreach(QString const &arg, arguments)
{
qDebug() << arg;
}
デバッグ時におけるコマンドライン引数の設定
- Qt Creatorを起動して、任意のQtプロジェクトを開く。
- Qt Creatorのメイン画面左にある[プロジェクト]アイコン - [Build & Run]セクション - [Run]項目を選択して、[実行時の設定]画面を表示する。
- [実行時の設定]画面から、[実行]セクション - [コマンドライン引数:]項目に、コマンドライン引数を記述する。
コマンドライン引数の記述方法は、以下の通りである。
# 各引数は半角スペースで区切る hoge piyo fuga # 引数の内容に空白が入っている場合は、ダブルクォーテーション""で囲む "hoge piyo" fuga # 引数の内容にダブルクォーテーション""が入っている場合は、直前にエスケープシーケンスを記述する "hoge \" piyo" fuga