您的位置:首页 > 编程语言 > Qt开发

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

2017-04-22 14:13 731 查看
这两天在工作遇到要拷贝文件的功能,直接用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跟在后面的参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐