Qt: Обновление только измененных строк в QTableView при вставке / удалении строк в QAbstractTableModel - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь выполнить только частичное обновление обновленных строк в моем QTableView, когда я вставляю и удаляю строки моего TableModel (QAbstractTableModel наследования).

Когда я выполняю свои вставки, явызовите мое переопределенное значение insertRows(row, count, QModelIndex()), которое добавляется к моей структуре данных в пределах beginInsertRows(parent, row, row + count - 1) и endInsertRows().

. Таблица обновляется при добавлении и удалении, но выглядит как сигналы, излучаемые beginInsertRows(..) иendInsertRows() говорит представлению обновить всю таблицу.Оператор print внутри моего TableModel::data() показывает, что обновляются все ячейки моей таблицы.

bool TableModel::insertRows(int row, int count, const QModelIndex &parent)
{
    if (row >= 0 && row <= file_records.size())
    {
        beginInsertRows(parent, row, row + count - 1);
        file_records.append(0);
        endInsertRows();

        return true;
    }

    return false;
}

// when adding record 
int row = file_records.size();
if (insertRow(row))
{
    file_records[row] = file_record;
}

inline bool QAbstractItemModel::insertRow(int arow, const QModelIndex &aparent)
{ 
    return insertRows(arow, 1, aparent); 
}

Можно ли указать представлению обновить только новые строки?

Моя функция обновления генерирует dataChanged() для затронутых индексов и успешно обновляет только соответствующие данные представления.Но, кажется, нет никакого способа использовать функции begin* и end*, когда я делаю структурные изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...