Скопируйте 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(); если вы хотите сохранить данные заголовка и размеры столбцов в связанных представлениях.

Вы можете сделать копию существующего элемента с помощью следующих шагов:

  1. Получить существующий предмет.
  2. Создать новый предмет.
  3. Установите необходимые роли данных из существующего элемента в новый.
  4. Сделайте то же самое с флагами.

Или просто использовать QStandardItem::clone() метод. И переопределить это, если это необходимо.

Другие вопросы по тегам