Qprocess i kopiowanie plików

Odpowiedz Nowy wątek
2015-01-11 09:26
0

Hej,

Mam problem podczas pisania programu z biblioteką QProcess. Otóż za pomocą QFileDialog wybieram dowolny plik w systemie i przetrzymuję jego ścieżkę w zmiennej plik. Następnie chcę ten plik skopiować do domyślnej lokalizacji, gdzie znajduje się program.
Niestety program tego nie robi i nie mogę dojść do tego dlaczego. Dodam, że komenda, którą generuję po przeklejeniu do cmd działa i kopiuje plik.

Kod:

QString plik = QFileDialog::getOpenFileName(
            this,
            tr("Open File"),
            QCoreApplication::applicationDirPath(),
            "Text File (*.txt);;Word document(*.doc);;Excel Document(*.xls);;Writer Document(*.odt);;Calc Document(*.ods);;PDF(*.pdf);;JPG(*.JPG);;PNG(*.PNG);;"
            );

QProcess *komenda = new QProcess(this);
QString StringKomenda;

#if defined _WIN32
StringKomenda += "copy ";
#else
StringKomenda += "cp ";
#endif
StringKomenda +='"'+ plik + '"' + ' ' + '"' + QCoreApplication::applicationDirPath() + '/img"';
qDebug() << StringKomenda;
komenda->execute(StringKomenda);

Pozostało 580 znaków

2015-01-11 10:07
kq
1

Polecam QFile::copy(): http://doc-snapshot.qt-project.org/qt5-5.4/qfile.html#copy-2

Na linuksie zapewne działa. Na windowsie, copy nie jest programem tylko komendą zaimplementowaną bezpośrednio w cmd.exe, więc musiałbyś odpalić dodać cmd /C na początku StringKomenda.


edytowany 1x, ostatnio: kq, 2015-01-11 10:08

Pozostało 580 znaków

2015-01-11 17:03
0

Hmm, zrobiłem coś takiego, ale to niestety nadal nie kopiuje pliku...

void okno_dodWpis::on_pushButton_clicked()
{
QString plik = QFileDialog::getOpenFileName(
this,
tr("Open File"),
QCoreApplication::applicationDirPath(),
"Text File (.txt);;Word document(.doc);;Excel Document(.xls);;Writer Document(.odt);;Calc Document(.ods);;PDF(.pdf);;JPG(.JPG);;PNG(.PNG);;"
);

// QProcess *komenda = new QProcess(this);
// QString StringKomenda;
//#if defined _WIN32
// StringKomenda += "copy ";
//#else
// StringKomenda += "cp ";
//#endif

  • *StringKomenda +='"'+ plik + '"' + ' ' + '"' + QCoreApplication::applicationDirPath() + '/img"';
  • *qDebug() << StringKomenda;
    qDebug() << QCoreApplication::applicationDirPath() + "/img";
    QFile::copy(plik, QCoreApplication::applicationDirPath() + "/img");
    }

Pozostało 580 znaków

2015-01-11 17:11
kq

QFile::copy przyjmuje dwie nazwy pliku, a Ty prawdopodobnie podajesz nazwę katalogu jako drugi argument.


Pozostało 580 znaków

2015-02-09 09:00
0

Ok działa, dzięki, wątek do amknięcia.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0