c++ - QFile 打不开

标签 c++ qt

我编写了以下代码来从文件中检索数据(该文件已经存在并且因为我在 Windows 操作系统上而获得了权限),并创建了项目以在列表中显示数据片段,但该列表不会显示任何内容事物。此外,我发现即使未创建文件,FILE.EXISTS() 函数也返回 true。为什么会这样?

 void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)  
 {
     ui->listWidget_2->clear();
     QListWidgetItem *itm=new QListWidgetItem;
     ui->commentbutton->setEnabled(true);

     QFile files("E:/"+QString::number(ui->listWidget->currentRow())+"com.txt");

     if(files.exists())
     {
         if(!files.open(QFile::ReadOnly | QFile::Text))
         {
              QMessageBox::warning(this,"File Access!!!","The File containing data of      the Items and Comments can't be acessed",QMessageBox::Ok);
              return;
         }
         QTextStream in(&files);
         QString data(in.readLine());
         int x=0;

         QString temp;

         for(int i=0;;i++)
          {
             if(data.at(i)!='@' && data.at(i+1)!='#')
             {
                 temp[x]=data.at(i);
                 x++;
             }
             else
                 if(data.at(i)=='@' && data.at(i+1)=='#')
                 {
                     x=0;
                     i++;
                     itm->setText(temp);
                     ui->listWidget_2->addItem(itm);
                 }
             if(data.end())
                 break;
         }
         files.close();
     }

生成文件的路径显示:0 & 1 are the files containing the data stored in items and 0com is the comment file associated with 0 item file

这是存储在0com.txt文件(注释文件)中的数据: 纽约@#伦敦@# 感谢您的宝贵时间!

最佳答案

1) 0com.txt 实际存在。对于 ui->listWidget 中的当前行号,您是否有一个“错误的”files.exists()

2) data.end() 返回一个 STL 风格的迭代器,而你是按索引递增的。使用

if(i>= data.size())
    break;

3) 请出示“0com.txt”的内容以供进一步调试

关于c++ - QFile 打不开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555156/

相关文章:

c++ - 我用过STL吗?或不?

c++ - 计算 trampoline hook 的 JMP 指令地址

c++ - Qt-追加到QList

c++ - 使用 qt creator 进行 jit 调试 (Windows)

c++ - 使用来自系统级进程(Windows 服务)的登录用户上下文模拟和运行任何方法 :

C++ 多维双数组不能按预期工作

c++ - 将 Qt 代码从 Windows 移植到 Ubuntu 时出现 header 位置问题

qt - 在QML ListView中的元素之间需要页边距

qt - 如果超出范围,如何在 QML TextInput 中隐藏文本

c++ - Qt PDF教程?