Чтение из текстового файла в QTableView

302
26 мая 2017, 15:01

Требуется из простого текстового файла выгрузить данные построчно в QTableView (используется QStandardItemModel). Все интересующие меня данные я получаю правильно - одно значение на одну строку, тут никаких проблем. Таблица имеет 5 столбцов и неограниченное количество строк.

Вопрос, собственно, в том, как складывать по 5 строк из файла в одну строку таблицы?

Пока все данные грузятся в первый столбец, количество строк - как в текстовом файле...

Answer 1

Ну например вот так:

//допустим, что у вас уже считаны пять строк из файла (например в QStringList columns)
QList<QStandardItem*> newRow;
for (auto columnText:columns)
{
    auto newItem = new QStandardItem(columnText);
    newRow.append(newItem);
}
model.appendRow(newRow);

Если без лишних изысков объединить этот вариант и ваш пример из комментариев, то можно получить что-нибудь такое:

int columnIndex = 0;
QRegularExpression re("(.+)="); 
QStringList columns;
QTextStream in(&file); 
while(!in.atEnd()) 
{ 
    auto readLine = in.readLine().split(re, QString::SkipEmptyParts); 
    if (!readLine.isEmpty())
    {
        columns.append(readLine.at(0));
        ++columnIndex;
        if (columnIndex == 5)
        {
            QList<QStandardItem*> newRow;
            for (auto columnText:columns)
            {
                auto newItem = new QStandardItem(columnText);
                newRow.append(newItem);
            }
            model.appendRow(newRow);
            columns.clear();
            columnIndex = 0;
        }
    }
}
READ ALSO
Как связать локальные адреса из разных сетей?

Как связать локальные адреса из разных сетей?

Есть два реальных IP в разных странах, под каждым своя сеть с локальными адресамиНужно связать конкретный локальный IP одной сети с конкретным...

270
C++ как вернуть массив типа char из функции

C++ как вернуть массив типа char из функции

Не могу разобраться с возвратом массива из функцииКод:

488
Пользовательское управление в sfml

Пользовательское управление в sfml

Возникли проблемы в управлении спрайтомКоды клавиш управления храню в (int keyLeft, keyRight), они могут изменяться

358
как сконвертировать 2 байта hex Buffer в int

как сконвертировать 2 байта hex Buffer в int

есть вот такой буфер hex-значений - fe ff 03 99 00 01

316