Скопируйте QStandardItemModel в другой
Есть ли способ скопировать QStandardItemModel в другую QStandardItemModel? Или я должен перебрать каждую тему и добавить ее к другой модели?
2 ответа
Решение
Предмет может принадлежать только одной модели. Вот почему вам нужно создать копию каждого предмета и поместить его в другую модель. Вы можете сделать это, используя метод QStandardItem::clone
,
Это пример для моделей с одним столбцом:
void copy(QStandardItemModel* from, QStandardItemModel* to)
{
to->clear();
for (int i = 0 ; i < from->rowCount() ; i++)
{
to->appendRow(from->item(i)->clone());
}
}
РЕДАКТИРОВАТЬ:
использование to->removeRows(0, to->rowCount ());
вместо to->clear();
если вы хотите сохранить данные заголовка и размеры столбцов в связанных представлениях.
Вы можете сделать копию существующего элемента с помощью следующих шагов:
- Получить существующий предмет.
- Создать новый предмет.
- Установите необходимые роли данных из существующего элемента в новый.
- Сделайте то же самое с флагами.
Или просто использовать QStandardItem::clone()
метод. И переопределить это, если это необходимо.