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 hostOption(QStringList() << "i" << "ip", "数据库ip地址", "ip"); parser.addOption(hostOption);
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传至少三个参数,第三个参数表示获取后面值的存储名称,第四个参数可选,表示默认的参数值。如果没传第三个参数,会导致无法解析到参数后面跟着的值。