Перетаскивание скрытых столбцов QStandardItemModel в QTreeView

В QTreeView я хотел бы копировать строки с помощью перетаскивания. Соответствующие настройки перетаскивания выглядят так:

this->setDragDropMode( QAbstractItemView::DragDrop );
this->setDropIndicatorShown( true );

Это прекрасно работает для столбцов базового QStandardItemModel, которые визуализируются QTreeView. Но не все столбцы модели визуализируются (см. Скрыть будущие столбцы QStandardItemModel в QTreeView):

    void MyViewClass::columnCountChanged(int p_nOldCount , int p_nNewCount )
    {
    QTreeView::columnCountChanged( p_nOldCount, p_nNewCount );

    for ( int i = MyViewClass::m_nColumnType; i < p_nNewCount; ++i )
    {
        setColumnHidden( i, true );
    }
}

Как я могу скопировать всю строку QStandardItemModel путем перетаскивания в QTreeView, когда не все столбцы визуализируются QTreeView?

1 ответ

Решение

Нашел решение:

Нужно наследовать / реализовывать функции QAbstractModel:

  • виртуальный QMimeData * mimeData(const QModelIndexList &indexes) const;
  • виртуальный bool dropMimeData(const QMimeData *p_grData, Qt::DropAction p_grAction, int p_nRow, int p_nColumn, const QModelIndex &p_grParentIdx);
  • виртуальный QStringList mimeTypes() const;

в то время как mimeData должен кодировать данные, а dropMimeData должен декодировать данные и должен вставить новую строку / столбец с перетаскиваемыми данными.

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