QT中QProcess调用详解及实验
导读:本文共4426字符,通常情况下阅读需要15分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 在QT程序中需要将某目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了2天仍然没找到原因,使用另外一种办法解决了。创建压缩包的方法在windows平台创建压缩包,可以直接使用rar.exe,该程序在安装winrar之后,在其安装目录下就... ...
1
2
3
4
QProcess p(0);
p.start(command,args);
//command是要执行的命令,args是参数
p.waitForFinished();
//等待完成
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
QProcess p(0);
QString command =
"E:/test_rar_course/rar.exe"
;
QStringList args;
args.append(
"a"
);
args.append(
"-k"
);
args.append(
"-r"
);
args.append(
"-s"
);
args.append(
"-m1"
);
args.append(
"E:/test_rar_course/test.rar"
);
args.append(
"E:/test_rar_course/direct1/"
);
args.append(
"E:/test_rar_course/direct2/"
);
args.append(
"E:/test_rar_course/test.txt"
);
p.execute(command,args);
//command是要执行的命令,args是参数
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
QProcess p(0);
p.setWorkingDirectory(
"E:/test_rar_course/"
);
//指定进程的工作目录
QString command =
"E:/test_rar_course/rar.exe"
;
QStringList args;
args.append(
"a"
);
args.append(
"-k"
);
args.append(
"-r"
);
args.append(
"-s"
);
args.append(
"-m1"
);
args.append(
"-wE:/test_rar_course/"
);
//指定rar.exe的工作目录
args.append(
"test.rar"
);
args.append(
"direct1/"
);
args.append(
"direct2/"
);
args.append(
"test.txt"
);
p.execute(command,args);
//command是要执行的命令,args是参数
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
//获取输出
QProcess p(0);
p.setWorkingDirectory(
"E:/test_rar_course/"
);
//指定进程的工作目录
QString command =
"E:/test_rar_course/test.bat"
;
p.start(command);
p.waitForFinished();
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
1
2
cd /d E:/test_rar_course/
E:/test_rar_course/rar.exe a -k -r -s -m1 -wE:/test_rar_course/ test.rar direct1/ direct2/ test.txt
void
SystemTool::GenerateIndexRar(
char
* command)
{
if
(command == NULL)
return
;
system
(command);
}
#include <windows.h>
void
SystemTool::GenerateIndexRar(
char
* command)
{
if
(command == NULL)
return
;
/**
WinExec 的windows 调用,可以通过参数SW_HIDE隐藏命令行黑窗口
并且命令的路径是可以带括号的
*/
WinExec(command,SW_HIDE);
}
QT中QProcess调用详解及实验的详细内容,希望对您有所帮助,信息来源于网络。