Как добавить QFile в QList <QFile> - PullRequest
0 голосов
/ 24 января 2019

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

Я пытался изменить QList * files = new QList на QList файлы , но яполучаю ошибку

 C:\Qt_Projects\SecretaryApp\handler.cpp:130: error: no matching function for call to 'QList<QFile>::append(QFile*&)'
     files.append((tempfile));
                             ^

Вот код внутри функции

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
multiPart->setBoundary("----WebKitFormBoundary7MA4YWxkTrZu0gW");


QList<QFile>  * files = new QList<QFile>;
QList<QHttpPart> fileparts;


for(int i=0;i<urls.length();i++)
{
    QFile * tempfile = new QFile(urls[i].toLocalFile());

    tempfile->open(QIODevice::ReadOnly);

    qDebug()<<urls[i].toLocalFile();

    files->append((tempfile));  <------error here
}


for(int i=0;i<urls.length();i++)
{
        QHttpPart filePart;
        filePart.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"uploadImage\"; filename="+files[i]->fileName()));
        filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpg"));   // file type header MIME type
        filePart.setBodyDevice(files[i]);

        fileparts.append(filePart);
}


for(int i=0;i<urls.length();i++)
        files[i].setParent(multiPart);

for(int i=0;i<urls.length();i++)
        multiPart->append(fileparts[i]);

QNetworkRequest request((QUrl(sendImageAPI)));

Как мне исправить эту ошибку.Это возможно ?или мне лучше использовать векторы?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

В дополнение к ответу @Xplatforms, я бы добавил, что вы должны быть осторожны с владением объектами всегда, когда используете new.Я бы предпочел использовать:

QList<QFile *>  files

, если можете.Или у вас может быть утечка памяти, если вы не вызываете delete после.QFiles в порядке, поскольку вы передаете право собственности, вызывая setParent (предположим, что multiPart правильно удален).

0 голосов
/ 24 января 2019

Изменение

QList<QFile>  * files = new QList<QFile>;

до

QList<QFile * >  files;

или если вам нужен список в куче:

QList<QFile *>  * files = new QList<QFile *>;

потому что вы используете QFile * <- указатели </p>

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