Qt5 文件对话框选择文件后把文件移动到指定目录
项目构成
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <String>
#include <QStringList>
#include <QFileDialog>
#include <QDebug>
#include <QUrl>
#include <QDir>
#include <QProcess>
#include <QByteArray>
#include <QApplication>
#include <QRegularExpression>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
bool copyfile(QString sourcepath);
~MainWindow();
private slots:
void on_ptn_openfile_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_ptn_openfile_clicked()
{
QString filename=QFileDialog::getOpenFileName();//读取一个文件
qDebug()<<"filrname是:"<<filename<<endl;
copyfile(filename);
}
bool MainWindow::copyfile(QString sourcepath)
{
//目的路径targetpath按照不同的程序需要来进行处理
QProcess p(0);
QString targetpath=QApplication::applicationDirPath();
targetpath.remove(QRegularExpression("debug"));//为了调用photoa文件,要回退一级
targetpath=targetpath+"photoa";//目的路径
//构造命令
sourcepath=sourcepath+" ";//源路径
QString command=QString("copy ")+sourcepath+targetpath;
command=command.replace("/","\\");
qDebug()<<"命令是:"<<command<<endl;
//p.start("command")好像是没法执行带/,\\的命令,会报错,只能ping,ipconig......
//下面这个才成功的
p.start("cmd", QStringList()<<"/c"<<command);
p.waitForFinished();
QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());
qDebug()<<strTemp;
}
运行前
运行程序
运行结束(1.jpg被成功复制到指定目录下)
踩坑:
//p.start(“command”)好像是没法执行带/,\的命令,会报错,只能ping,ipconig…
这程序里是用这个才成功的 p.start(“cmd”, QStringList()<<"/c"<<command);