WinExec的缺点:
1 不支持汉字路径
2 默认是非阻塞模式运行。改为阻塞模式较麻烦
3 不能跨平台
以上恰恰都是QProcess所能完成的事情。
1 先看汉字支持:
以下代码删除目录C:\\汉字\\abc
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString qstrPath = ui->lineEdit->text();
QProcess::execute(QString("Cmd.exe /C rmdir /s/q %1").arg(qstrPath));
}
效果:
程序运行前:
程序运行后
2 查阅QProcess的文档可以发现,QProcess::execute()“waits for it to finish”,故是阻塞的。
3 无需多说,qt是跨平台的