QT中点击按钮执行脚本并向脚本传递参数

这两天在工作遇到要拷贝文件的功能,直接用QFile 的copy()功能拷贝文件速度太慢,所以想到用shell脚本来实现文件copy。需要点击界面上的一个button,执行拷贝文件的脚本,并且将待拷贝文件的文件名 作为参数传递到脚本中。在网上参考了相关的方法,然后实现了这个功能,这里总结一下。

1.点击按钮实现执行脚本功能

在Qt中点击按钮关联到执行脚本,使用QProcess 来完成。

本例中代码如下:

void UpgradeProgressBar::copyFileToDst()
{
    QProcess *tpuProcess = new QProcess();
    QString commandProgram = "./copyFile.sh";      //commandProgram 这个变量是待执行脚本的完整路径
    QStringList args;
    args.append(mFileName);                                     //mFileName 是待复制的文件名,作为参数传递给copyFile.sh文件,如果还有其他参数,可以往后加args.append(XX)
    tpuProcess->start(commandProgram,args);      //启动执行脚本文件
}

2.脚本接收Qt中传递的参数

copyFile.sh文件代码如下:

#! /bin/sh
touch testfile.txt
echo "I have $# parameter!"
echo "First parameter is: $0" >> testfile.txt
echo $0 >> testfile.txt
echo $1 >> testfile.txt
cp $1 /mnt/udisk/
#echo '12345678'| sudo -S cp $1 /mnt/udisk/
echo "Copy file finish!"

其中:

$# 表示传递参数的个数

$0 表示第0个参数,一般为./XX.sh

$1表示第一个参数,这里为mFileName(传递给脚本的文件名)

$2、 $3... 表示./XX.sh跟在后面的参数。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值