Я пытаюсь выполнить только частичное обновление обновленных строк в моем 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*
, когда я делаю структурные изменения.