Qt之命令行参数
简述
在Qt之进程间通信(QProcess)一节,我们讲解了如何通过QProcess来进行进程间的通信。主要通过启动外部程序,然后通过命令行的方式传递参数。
这里,我们可以通过Qt Creator来设置命令行参数Arguments,来设置需要用到的信息。也可以用来测试其它进程传参功能。
设置参数
选择:项目 -> 构建和运行 -> 运行,在Arguments输入框中输入需要传递的参数。
为了演示,我传递了一个Json对象:{\"UserName\":\"Qter\",\"Password\":\"123456\"}
。
解析
定义一个结构体,保存命令行参数对应的值,可根据需要,自行扩展。
struct UserInfo
{
QString strUserName; // 用户名
QString strPassword; // 密码
};
通过parseArguments来解析命令行参数,主要解析之前设置的Json对象。
#include <QApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <qDebug>
UserInfo g_userInfo = {"", ""};
void parseArguments()
{
// 获取命令行参数
QStringList arguments = QCoreApplication::arguments();
qDebug() << "Arguments : " << arguments;
if (arguments.count() < 2)
return;
QString strJson = arguments.at(1);
qDebug() << "Json : " << strJson;
// 解析Json对象
QJsonParseError jsonError;
QJsonDocument doucment = QJsonDocument::fromJson(strJson.toLocal8Bit(), &jsonError);
if (jsonError.error != QJsonParseError::NoError)
return;
if (doucment.isObject())
{
QJsonObject obj = doucment.object();
QJsonValue value;
if (obj.contains("UserName"))
{
value = obj.take("UserName");
if (value.isString())
g_userInfo.strUserName = value.toString();
}
if (obj.contains("Password"))
{
value = obj.take("Password");
if (value.isString())
g_userInfo.strPassword = value.toString();
}
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 解析命令行参数
parseArguments();
// 测试输出
qDebug() << "UserName : " << g_userInfo.strUserName;
qDebug() << "Password : " << g_userInfo.strPassword;
Widget w;
w.show();
return a.exec();
}
输出信息如下:
Arguments : ("E:\\Qt\\Test\\build-TestArguments-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\\debug\\TestArguments.exe", "{\"UserName\":\"Qter\",\"Password\":\"123456\"}")
Json : "{\"UserName\":\"Qter\",\"Password\":\"123456\"}"
UserName : "Qter"
Password : "123456"
这里,我们也可以使用cmd来进行测试:
其实,这就是我们所说的进程通信,利用进程cmd.exe启动进程TestArguments.exe并将Json对象传递给它。
更多参考
Qt之命令行参数的更多相关文章
- Qt 解析命令行参数
#include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickView> ...
- 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
1 新建项目 main.cpp #include <QCoreApplication> #include <QCommandLineParser> #include & ...
- QT解析命令行(QCommandLineOption和QCommandLineParser类)
Qt从5.2版开始提供了两个类QCommandLineOption和QCommandLineParser来解析应用的命令行参数. 一.命令行写法命令行:"-abc" 在QComma ...
- python处理命令行参数
直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析? http://blog.chinaunix.net/uid-20786165-id-3182268.html sys.argv ...
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]
较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...
- powershell脚本,命令行参数传值,并绑定变量的例子
这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 ...
- VS2013 带命令行参数的调试问题 解决方案
int main(int argc,char* argv[]) argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 比如: ...
- 使用getopt()处理命令行参数
假设有一程序 testopt,其命令行选项参数有: -i 选项 -l 选项 -r 选项 -n <值> 带关联值的选项 则处理 ...
随机推荐
- CF43A Football
CF43A Football 题意翻译 题目大意 两只足球队比赛,现给你进球情况,问哪支队伍赢了. 第一行一个整数nn (1\leq n\leq 1001≤n≤100 ),表示有nn 次进球,接下来n ...
- Java Pattern Matcher 正则表达式需要转义的字符
见:http://blog.csdn.net/bbirdsky/article/details/45368709 /** * 转义正则特殊字符 ($()*+.[]?\^{},|) * * @param ...
- iOS 相似QQ空间表视图下拉头部视图放大效果实现
UITableView 是 UIScrollView 的子类. 所以 UIScrollView 的代理方法.在UITableView 上相同可以得到适用. 既然如此那么我们就行知道.在表格下拉的过程中 ...
- 调用imagemagick做响应图片
设计出图后经常需要改下尺寸放在别的项目上使用,每次都是设计手工处理,其实图片服务可以做更多事情,比如借助强大的im,可以通过url控制图片尺寸 var childProcess = require(' ...
- swift属性观察者机智
为了让程序能在属性被赋值时获得执行代码的机会.swift提供了属性观察者机智,属性观察者其实就两个特殊的回调方法 willSet:被观察的属性即将被赋值之前自动调用该方法 didSet:被观察的属性被 ...
- ROS-Gazebo-turtlebot3仿真
前言:Gazebo是一款强大的3D仿真器,支持机器人开发所需的机器人.传感器和环境模型,并且通过搭载的物理引擎可以得到逼真的仿真结果.即便Gazebo是一款开源仿真器,却具有高水准的仿真性能,因此在机 ...
- Scrapy Architecture overview--官方文档
原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...
- jquery 登录,删除提示信息框
<a onclick="return confirm('确认要退出登录吗?')">退出</a> //删除,修改,添加时提示信息框 (del,edit,add ...
- PHP配置优化:php-fpm配置解读
PHP-FPM是一个PHP FastCGI管理器,php-fpm.conf配置文件用于控制PHP-FPM管理进程的相关参数,比如工作子进程的数量.运行权限.监听端口.慢请求等等. 我们在编译安装PHP ...
- ibatiS启动的异常 The content of elements must consist of well-formed character data or markup
ibatiS启动的异常 The content of elements must consist of well-formed character data or markup 配置的动态SQL语句里 ...