2016-05-05 6 views
0

У меня есть документ csv с разными входами, и мне нужна только первая запись в каждой строке. Поэтому я пробовал свой путь с помощью subString, установив «:» в качестве первого() разделителя. Но программа читает каждую запись дважды, что я делаю неправильно?Qt - Чтение документа csv в QListWidget

Sreenshot of program

Screenshot of CSV document

if (getin.open(QFile::ReadOnly)) { 

    items = getin.readAll(); 

    rowOfData = items.split("\n"); 
    getin.close(); 

} 
for (int x = 0; x < rowOfData.size(); x++) 
{ 
    rowData = rowOfData.at(x).split(",").first().split(":"); 


    for (int y = 0; y < rowData.size(); y++) 
    { 
     ui->itemListWidget->addItem(rowData.first()); 
    } 
} 

ответ

0

Ошибка в последнем цикле. Список rowData содержит 2 элемента (например, [«Chocolate», «on maj 2016»]), и вы перебираете список, всегда занимая первый элемент, поэтому вы создаете два элемента. Юо не нужно перебирать список, просто возьмите первый элемент один раз.

Пример

if(!rowData.isEmpty) 
    ui->itemListWidget->addItem(rowData.first()); 
+0

я ставлю в этой строке: если, но выход в программе одно и то же (rowData.isEmpty (!)). EDIT - я удалил второй цикл, и он работает. – giggitygoat

+0

, но вы должны удалить петлю! (replace for (int y = 0; y Fabio

Смежные вопросы