Qt命令行参数解析

Qt命令行参数解析

命令行工具一般支持通过–help获取参数用法,帮助用户掌握使用方法。Qt也提供了相关功能,主要涉及到QCommandLineParser和QCommandLineOption这两个类。使用方法就是添加自己的QCommandLineOption到QCommandLineParser中,然后通过QCommandLineParser去解析QCoreApplication中的参数。使用样例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    QCoreApplication a(argc, argv);
QCoreApplication::setOrganizationName("Qt");

QCoreApplication::setOrganizationDomain("Qt.com");

QCoreApplication::setApplicationName("Test");

QCoreApplication::setApplicationVersion("1.0");

QCommandLineParser parser;
parser.setApplicationDescription("帮助");
parser.addHelpOption();
parser.addVersionOption();

//QCommandLineOption 如果只是没有对应值的选项就可以只给他传递两个参数,如果需要获取参数对应的值
//就至少需要传递三个参数,第三个参数表示要获取后面对应的值,第四个参数表示默认的选项
QCommandLineOption hostOption(QStringList() << "i" << "ip", "数据库ip地址", "ip");
parser.addOption(hostOption);

// A boolean option with multiple names (-u, --user)
QCommandLineOption userOption(QStringList() << "u" << "username", "用户名", "username");
parser.addOption(userOption);

QCommandLineOption passwordOption(QStringList() << "p" << "password", "密码", "password");
parser.addOption(passwordOption);

parser.process(a);

bool hasHost = parser.isSet(hostOption);
if (hasHost) {
QString host = parser.value(hostOption);
QString username = parser.value(userOption);
QString password = parser.value(passwordOption);
}

QCommandLineParser已经提供了help(-h;–help)和version(-v;–version)的等选项,直接通过addVersionOption()等接口加入即可,然后这个接口会去从QCoreApplication::setApplicationVersion(“xxx”)这里取数据。所以自定义的选项最好不要和这些内置的选项命名冲突。自定义的选项有两种,一种只是提供一个开关,表示是否开启某个功能,这种情况只需要给QCommandLineOption传递两个参数即可。如果参数后面跟着对应的值,那么就需要给QCommandLineOption传至少三个参数,第三个参数表示获取后面值的存储名称,第四个参数可选,表示默认的参数值。如果没传第三个参数,会导致无法解析到参数后面跟着的值。


Qt命令行参数解析
http://yoursite.com/2021/10/18/Qt命令行参数解析/
作者
还在输入
发布于
2021年10月18日
许可协议