2010-04-10 104 views
23

我有一个三列表格视图;我刚刚通过使用此代码Qt - 从文本文件中读取

QFile file("/home/hamad/lesson11.txt"); 
if(!file.open(QIODevice::WriteOnly)) { 
    QMessageBox::information(0,"error",file.errorString()); 
} 
QString dd; 

for(int row=0; row < model->rowCount(); row++) { 
    dd = model->item(row,0)->text() + "," 
       + model->item(row,1)->text() + "," 
       + model->item(row,2)->text(); 

    QTextStream out(&file); 
    out << dd << endl; 
} 

写入到文本文件,但我没有成功再次读取相同的文件,我想这个代码,但我不知道哪里是它的问题

QFile file("/home/hamad/lesson11.txt"); 
QTextStream in(&file); 
QString line = in.readLine(); 
while(!in.atEnd()) { 

    QStringList fields = line.split(","); 

    model->appendRow(fields); 

} 

请帮忙吗?

+0

你打开该文件,再喜欢你做的第一次?我认为这可能是你的问题。 – 2010-04-10 03:32:12

+0

我无法从Qt打开文件;但我确信通过使用geedit打开txt文件,书写功能可以完美地工作。任何帮助? – user289175 2010-04-10 03:52:26

+0

mosg有一个很好的观点,但我的问题是为什么你不试图在读取文件之前调用file.open?你在写它之前就做了,所以为什么你不必在阅读之前去做呢?您的帖子中的代码不会那样做。 – 2010-04-10 13:56:31

回答

81

必须更换串线

QString line = in.readLine(); 

QFile file("/home/hamad/lesson11.txt"); 
if(!file.open(QIODevice::ReadOnly)) { 
    QMessageBox::information(0, "error", file.errorString()); 
} 

QTextStream in(&file); 

while(!in.atEnd()) { 
    QString line = in.readLine();  
    QStringList fields = line.split(",");  
    model->appendRow(fields);  
} 

file.close(); 
+1

他的错误似乎也是他没有像在代码中那样调用file.open 。 – 2010-04-10 13:58:59

+0

谢谢大家,我需要更多的努力。有错误 错误“没有匹配函数调用'QStandardItemModel :: appendRow(QStringList&)'” – user289175 2010-04-11 06:01:24

+3

@ user289175:再次,你必须阅读Qt文档(例如,Qt助手)。在QStandardItemModel类中,这不是QStandardItemModel :: appendRow(QStringList&)成员,但appendRow(const QList &)&appendRow(QStandardItem *)具有。 – mosg 2010-04-12 06:09:59