• 5751阅读
  • 4回复

读取文件到QTextBrowser的问题 [复制链接]

上一主题 下一主题
离线lugaideath
 

只看楼主 倒序阅读 楼主  发表于: 2009-04-09
void myClass::load()
{
    if(!QFile::existe(f))
    {
        QFile file(f);
        if(!file.open(QFile::WriteOnly | QFile::Text)
            return;
        QTextStream out(&file);
        out << "";
    }
    QFile file(f);
    if(!file.open(QFile::ReadOnly | QFile::Text)
        return;
    QTextStream in(&file);
    textBrowser->setHtml(in.readAll());
    //qDebug() << in.readAll();
}

我窗体里面有一个按钮调用上面的方法,f是一个文件的路径QString,文件是存在的,而且是有内容的,所以第一个判断就不会进去!
问题就是,当我第一次调用这方法的时候,内容成功地set到QTextBrowser里面,但我第二次按那按钮的时候,内容就被清空!而我改为后台输出,不设内容进去,发现第二次的时候输出结果是"",就是没有读到东西!为什么会这样呢?望高手指点一下!
离线318065268
只看该作者 1楼 发表于: 2009-04-09
什么版本的Qt?下面是4.3中exists函数:
bool QFile::exists () const
This is an overloaded member function, provided for convenience.
Returns true if the file specified by fileName() exists; otherwise returns false.
内容被清空可能是文件的内容被改变了,可能是if(!QFile::existe(f))里面的东西被执行了吧。
不妨多加几处qDebug()看看。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线lugaideath

只看该作者 2楼 发表于: 2009-04-09
没有啊!
    if(!QFile::existe(f))
    {
        QFile file(f);
        if(!file.open(QFile::WriteOnly | QFile::Text)
            return;
        QTextStream out(&file);
        out << "";
    }
这个判断里面我都写过qDebug啊!是没有输出的!甚至把那判断注释掉第二次的时候内容还是被清空了!
离线lugaideath

只看该作者 3楼 发表于: 2009-04-09
求救啊~~~~
离线lugaideath

只看该作者 4楼 发表于: 2009-04-09
我发现问题所在,但找不到方法解决!
问题是当第一次in.readAll()文档的时候,QTextStream的atEnd()是true,当我第二次的时候读同一个文档的时候,QTextStream没有跑回文档头,还是在文档尾, atEnd()一开始就是true,如果第二次读别的文档atEnd()一开始是falsh的,我找不到方法可以使QTextStream跑回文档头!
快速回复
限100 字节
 
上一个 下一个