QDir :: rename возвращает false - PullRequest
       3

QDir :: rename возвращает false

0 голосов
/ 09 февраля 2019

Я хотел бы перенести файл из определенного каталога в другой, но когда я использую QDir.переименуйте его, кажется, всегда происходит сбой.

void handler::moveToTempFolder(QString localFilePath)
{

qDebug()<<localFilePath; <--- "C:/Users/user1/Pictures/IMG_00000009.jpg"

qDebug()<<"/TempFiles/" + getFileNameFromPath(localFilePath); <---- "/TempFiles/IMG_00000009.jpg" a folder that is in the same location as the .pro

QDir dir;
if(dir.rename(localFilePath,"/TempFiles/" + getFileNameFromPath(localFilePath)))
    qDebug()<<"Success";
else
    qDebug()<<"Failed";

}

Я получаю сообщение Failed на моем терминале.кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Рабочий каталог во время работы программы - это папка сборки, а не папка проекта.Я думаю, это ваша проблема.

0 голосов
/ 10 февраля 2019

Qt не имеет метода для доступа к папке проекта, в которой находится ваш .pro-файл. Возможно, потому что после развертывания этого, любое другое устройство, кроме вашего, не будет иметь эту папку.

Однако он может получить доступпапка, в которой исполняемый файл находится с помощью QDir :: currentPath ().

Кроме того, я не уверен, как вы определили getFileNameFromPath - но вы можете сделать это с помощью QFileInfo.

void MainWindow::moveToTempFolder(QString localFilePath)
{
    QFileInfo fileInfo(localFilePath);

    QDir dir;
    QString tempFilePath = dir.currentPath() + "/TempFiles/" + fileInfo.fileName();

    if(dir.rename(localFilePath, tempFilePath))
    {
        qDebug() << "Success";
    } else {
        qDebug() << "Failed";
    }

}

Примечание: Когда вы запустите это из Qt Creator, ваша папка / TempFiles /, скорее всего, будет находиться в той же папке, что и ваши папки / debug / и / release / (на один уровень выше вашего исполняемого файла).Но как только вы развернете это (или запустите его вручную из .exe) - / TempFiles / будет в тех же папках .exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...