我正在尝试制作一个QFiles的列表,我选择了QList方法,但不确定它是否是一个好方法。我编写了此代码,但它无法构建!
QList<QFile> filesList;
QFile file_1(QString("path/to/file_1"));
QFile file_2(QString("path/to/file_2"));
filesList.append(file_1);
filesList.append(file_2);
for(auto& file : filesList){
if(!file.open(QIODevice::ReadOnly)){
qDebug() << "file is not open.";
}
}
生成失败,出现以下错误:
error: ‘QFile::QFile(const QFile&)’ is private within this context
if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t);
^~~~~~~~
使用QList方法制作***文件列表***以供以后使用好吗?如果是这样,如何修复我的代码?
4条答案
按热度按时间ruarlubt1#
看起来问题是QFile类有一个私有的复制构造函数,这意味着它不能被复制。因此,它不能被存储在像QList这样的容器中。解决这个问题的一个方法是在QList中存储指向QFile对象的指针,而不是对象本身。
试试这个:
更新版本:
uqcuzwp82#
感谢@Fareanor注解,我通过为路径创建一个QString列表来解决这个问题,并且在打开文件时使用QFile:
yiytaume3#
为什么要创建
QFile
列表?也许您可以只存储QString
路径,然后在需要时创建QFile
:o3imoua44#
如果你想要QFile的QList,为什么不放置元素呢?。当它们可以被就地创建时,不需要在外部创建它们并复制它们: