12,788
回編集
16行目: | 16行目: | ||
<br> | <br> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
// CustomCommandLineParser.hファイル | |||
#include <QCoreApplication> | #include <QCoreApplication> | ||
#include <QCommandLineParser> | #include <QCommandLineParser> | ||
#include < | #include <QRegularExpression> | ||
#include <QDebug> | #include <QDebug> | ||
class CustomCommandLineParser : public QCommandLineParser | |||
{ | |||
public: | |||
void process(const QStringList &arguments) | |||
{ | |||
QStringList filteredArgs; | |||
static QRegularExpression validOptionRegex("^(-v|-h|-c|--version|--help|--config)(?:=.*)?$"); | |||
for (const QString &arg : arguments) { | |||
if (validOptionRegex.match(arg).hasMatch()) { | |||
filteredArgs << arg; | |||
} | |||
else if (arg.startsWith("-")) { | |||
qDebug() << "不明なオプション:" << arg; | |||
} | |||
else { | |||
filteredArgs << arg; | |||
} | |||
} | |||
QCommandLineParser::process(filteredArgs); | |||
} | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// main.cppファイル | |||
#include "CustomCommandLineParser.h" | |||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
27行目: | 59行目: | ||
QCoreApplication::setApplicationVersion("1.0"); | QCoreApplication::setApplicationVersion("1.0"); | ||
CustomCommandLineParser parser; | |||
parser.setApplicationDescription("Command line options example"); | parser.setApplicationDescription("Command line options example"); | ||
QCommandLineOption versionOption(QStringList() << "v" << "version", "Displays version information."); | QCommandLineOption versionOption(QStringList() << "v" << "version", "Displays version information."); | ||
parser.addOption(versionOption); | parser.addOption(versionOption); | ||
QCommandLineOption helpOption(QStringList() << "h" << "help", "Displays help information."); | QCommandLineOption helpOption(QStringList() << "h" << "help", "Displays help information."); | ||
parser.addOption(helpOption); | parser.addOption(helpOption); | ||
QCommandLineOption configOption(QStringList() << "c" << "config", "Display the configuration string.", "config"); | QCommandLineOption configOption(QStringList() << "c" << "config", "Display the configuration string.", "config"); | ||
parser.addOption(configOption); | parser.addOption(configOption); | ||
parser.process( | parser.process(QCoreApplication::arguments()); | ||
if (parser.isSet(helpOption)) { | if (parser.isSet(helpOption)) { | ||
parser.showHelp(); | parser.showHelp(); | ||
60行目: | 89行目: | ||
} | } | ||
if (parser.positionalArguments().isEmpty() && !parser.optionNames().isEmpty()) { | |||
qDebug() << "有効なオプションはありません。使用法については、-h または --help を使用してください。"; | |||
} | } | ||
return 0; | return 0; | ||
} | } |