开发者社区> 问答> 正文

将QFile储存在QHash中

#include <QHash>
#include <QString>
#include <QFile>
#include <QTextStream>
#include <QFile>
#include <QDebug>

int main(int argc, char *argv[])
{
QHash <qint32,QFile *> fileHandHash;
for(qint32 i=0; i<1000; i++){
qint32 id = i % 10;
qDebug() << i << "\t" << id;

if( ! fileHandHash.contains(id) ){
QString filename = id + ".out.txt";
QFile MYFILE(filename);
MYFILE.open(QIODevice::WriteOnly);
fileHandHash.insert(id,&MYFILE);
}

QTextStream OUT(fileHandHash[id]);
OUT << i << "\n";
}
return 1;
}

运行的时候出现下面的错误:

QObject::connect: No such signal QObject::aboutToClose() in ....includeQtCore5.3.2QtCore/private/../../../../../src/corelib/io/qtextstream_p.h:75
谢谢大家!

展开
收起
a123456678 2016-03-09 16:46:48 2507 0
1 条回答
写回答
取消 提交回答
  • if( ! fileHandHash.contains(id) ){
    QString filename = id + ".out.txt";
    QFile MYFILE(filename);
    MYFILE.open(QIODevice::WriteOnly);
    fileHandHash.insert(id,&MYFILE);
    }
    这一段里面MYFILE在大括号后就被回收了。你试试改成指针,然后用

    QFile *MYFILE = new QFile(filename);
    最后再一起Delete

    2019-07-17 18:56:24
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载