我正在创建一个包含10到15张图像的表单数据请求。为了最大程度地减少代码,我使用QList来存储图像的位置
我尝试将 QList * files = new QList 更改为 QList files ,但我遇到错误
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)));
如何解决此错误。这可能吗 ?还是我最好使用向量?
答案 0 :(得分:1)
更改
QList<QFile> * files = new QList<QFile>;
到
QList<QFile * > files;
或者如果您需要在堆上列出列表:
QList<QFile *> * files = new QList<QFile *>;
因为您使用了QFile *
<-指针
答案 1 :(得分:0)
除了@Xplatforms答案外,我还要补充一点,对于对象所有权,在使用new时应格外小心。我更喜欢使用:
QList<QFile *> files
如果可以的话。如果您之后不手动调用delete,则可能会导致内存泄漏。由于您通过调用setParent转移所有权(假设multiPart已正确删除),因此QFiles正常。