• 使用Qt实现命令行解析


    本文介绍使用Qt实现命令行解析。

    在使用Qt开发软件时,有时候不需要设计界面(使用Qt库和signal,slot机制),程序在运行时需传递一些参数以完成系统配置,类似在Linux系统命令行下输入命令,就可以执行相应的功能。Qt提供了相应的类以支持命令行的解析。

    1.涉及相关类

    1)QCommandLineParser类

    QCommandLineParser类的作用就是解析命令行参数,它实际上就是一个字符串类型的命令行解析器,此解析器仅在程序执行时进行命令解析,因此,命令行解析器的执行需要放置在main()函数的开头。如:

    1. int main(int argc, char *argv[])
    2. {
    3. QApplication a(argc, argv);
    4. QCommandLineParser parser;
    5. parser.process(a);
    6. }

    这里,给了一个空参数的命令行解析器以演示其基本功能。

    2)QCommandLineOption类

    在进行命令行解析前,我们需要将一些命令行选项添加到命令行解析器,这样命令行解析器才可以根据实际输入选项去置位相应的标识,程序判断某个选项被置位,就可以执行此选项对应的功能。选项功能需借助QCommandLineOption类来实现。如:

    1. int main(int argc, char *argv[])
    2. {
    3. QApplication a(argc, argv);
    4. QCommandLineParser parser;
    5. QCommandLineOption op1("p");
    6. op1.setValueName("path");
    7. parser.addOption(op1);
    8. QCommandLineOption op2("s");
    9. parser.addOption(op2);
    10. parser.process(a);
    11. if (parser.isSet(op1)) {
    12. qDebug() << parser.value(op1);
    13. } else if (parser.isSet(op2)) {
    14. qDebug() << "start streaming";
    15. } else {
    16. }
    17. }

    这里,我们给命令行解析器添加了2个选项,一个"p"选型,一个"s"选项,这样,我们在命令行下就可以实现相应的功能(这里的应用程序名称为"test")。

    1. ./test -p /home/test
    2. ./test -s

    2.例子

    1. int main(int argc, char *argv[])
    2. {
    3. QApplication a(argc, argv);
    4. MainWindow w;
    5. QCoreApplication::setApplicationName("test");
    6. QCoreApplication::setApplicationVersion("V1.0");
    7. QCommandLineParser parser;
    8. parser.setApplicationDescription("test helper");
    9. parser.addHelpOption();
    10. parser.addVersionOption();
    11. QCommandLineOption op1("s");
    12. parser.addOption(op1);
    13. QCommandLineOption op2("state");
    14. parser.addOption(op2);
    15. QCommandLineOption op3("p");
    16. op3.setValueName("path");
    17. parser.addOption(op3);
    18. parser.process(a);
    19. if (parser.isSet(op1)) {
    20. qDebug() << "start streaming";
    21. } else if (parser.isSet(op2)) {
    22. qDebug() << "current state:stop";
    23. } else if (parser.isSet(op3)) {
    24. qDebug() << "path:" << parser.value(op3);
    25. } else {
    26. }
    27. }

    这里,我们实现了3种常见的命令行选项:

    1)单一字符选项,不附加任何参数

    ./test -s

    2)字符串选项,不附加任何参数,这里注意是“--”

    ./test --state

    3)单一字符选型,附加参数

    ./test -p /home/doc

    应用程序根据此命令是否被设置(输入),来执行相应的功能。这里,仅打印相应的调试信息来表示此选项被设置。

    总结,本文介绍了使用Qt实现命令行解析的方法,并实现了常用的命令行操作选项。

  • 相关阅读:
    上下文视觉提示实现zero-shot分割检测及多visual-prompt改造
    重构学习(四):代码的坏味道
    史上最全webpack带你深入了解webpack
    Python——基于YOLOV8的车牌识别(源码+教程)
    多人协作多版本开发冲突的正确解决姿势
    5. 工业大数据典型应用
    【软考:系统集成项目管理】之 项目干系人管理
    一文读懂,MES管理系统模块功能
    docker安装Elasticsearch
    libevent库event事件使用
  • 原文地址:https://blog.csdn.net/propor/article/details/134419765