日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

(Qt)使用QCommandLineParser進行程序的命令行解析

作者:蘇州-青蛙 更新時間: 2022-05-13 編程語言

在開發(fā)過程中,由于需要,有時候要對程序中的命令行進行使用,比如最近的開發(fā)任務(wù)需要用外部exe啟動我們的軟件,啟動的時候傳入一些必要的命令行參數(shù),使我們軟件啟動的時候根據(jù)這些參數(shù)進行一些必要的操作,這個時候就可以使用Qt自帶的QCommandLineParser這個類。

Qt中是用QCommandLineOption和QCommandLineParser這兩個類配合進行應(yīng)用的解析。下面就直接貼出一個例子的簡單使用,方便大家理解,其中涉及到一些東西也很多,長,短命令,以及多參,從最基礎(chǔ)的用法入手,后面自己學(xué)習擴展即可。

封裝了一個用例類(舉例了一個軟件自啟動的例子):

頭文件:

/*
軟件命令行解析
1.自啟動                -r=auto
2.某路徑                -o=path
3.某路徑                -b=path
4.xxxxx                 -x=xxxx
5.......                .......
*/

#pragma once
#include 

class CommandLineParser{
public:
   //@brief:是否有軟件自啟動命令行
   static bool IsSetAutoRun();
   //@brief:獲取軟件自啟動命令行數(shù)值
   static QString GetAutoRunValue();

private:
	BFCommandLineParser();
	~BFCommandLineParser();
    BFCommandLineParser(BFCommandLineParser&)=delete;
    BFCommandLineParser&operator=(BFCommandLineParser&)= delete;
};

實現(xiàn)文件:

#include "BFCommandLineParser.h"
#include 
#include 
#include 

CommandLineParser::CommandLineParser() 
{
  //構(gòu)造
}
CommandLineParser::~CommandLineParser() 
{
  //析構(gòu)
}



bool BFCommandLineParser::IsSetAutoRun() {  
  //解析對象
  QCommandLineParser command_parser;
  //解析選項對象
  QCommandLineOption option("a");
  //參數(shù)期望的數(shù)值,如果不設(shè)置,使用process解析會異常退出
  option.setValueName("auto");
  //添加解析選項
  command_parser.addOption(option);
  //開始解析
  command_parser.parse(qApp->arguments());
  qDebug() << command_parser.isSet(option);
  //應(yīng)用程序的命令行是否含有該解析選項
  return command_parser.isSet(option);
}

QString BFCommandLineParser::GetAutoRunValue() {
  QCommandLineParser command_parser;
  QCommandLineOption option("a");
  option.setValueName("auto");
  command_parser.addOption(option);
  command_parser.parse(qApp->arguments());

  QString str;
  if (command_parser.isSet(option)) {
    //獲取應(yīng)用程序的命令行中含有該解析選項的數(shù)值
    str = command_parser.value(option);
  } 
  return str;
}

自己遇到的問題和注意點:

1.QCommandLineOption::parser和QCommandLineOption::process效果類似,后者要是程序的命令行沒有選項程序會一場退出。

2.如果是有參數(shù)的選項,要設(shè)置期望名字QCommandLineOption::setValueName 然后在解析

3.順序不要錯誤,設(shè)置完選項之后再調(diào)用QCommandLineOption::parser或者QCommandLineOption::process解析。

4.獲取數(shù)值的時候如果調(diào)用的是values而不是value發(fā)現(xiàn)就不準確,其他選項任何包含該關(guān)鍵詞的字符串都會被輸出出來。

原文鏈接:https://blog.csdn.net/qq_36533978/article/details/124689694

欄目分類
最近更新