Мои комментарии были запущены слишком долго, так что я понял, я хотел бы начать ответ теперь с информацией.
QAbstractItemModel - это базовый класс, который существует, когда вам нужен индивидуальный способ моделирования ваших данных, которые не соответствуют одному из существующих, например, где источник данных и как представлять их как элементы. Он не готов к использованию из коробки, так как он должен реализовывать ряд методов. Вероятно, вам не следует начинать с этого класса, если у вас нет веских оснований для этого, поскольку для работы и работы требуется гораздо больше работы.
Для простоты перетаскивания и использования основных элементов QStandardItemModel должен быть готов к использованию. Вы просто создаете QStandardItems и заполняете модель. Для перетаскивания вы должны подклассифицировать модель и просто реализовать соответствующие методы * Event and drop * Event для ваших нужд.
Использование QStandardItemModel + QTreeView позволяет вам иметь несколько видов просмотра, используя одну и ту же модель, и одновременно визуализировать ее. Но, учитывая, что вы сказали, что хотите сохранить два разных набора независимых данных, и что вы новичок в Qt, я бы настоятельно рекомендовал вам использовать два QTreeWidgets. QTreeWidget - это всеобъемлющий пакет представления и модели. Это будет намного проще для вас использовать сейчас.
Используя QTreeWidget, вы должны подклассифицировать их и реализовать необходимые события перетаскивания так же, как и для QTreeView, но вам больше не придется беспокоиться о моделях отдельно.
Вот ссылка на пост о перетаскивании с QTreeWidget: http://www.qtcentre.org/threads/5910-QTreeWidget-Drag-and-drop
Они упоминают рекомендуемые методы для реализации, а также то, что вы должны делать с подклассом QTreeWidgetItem для определения mimeData.
Вы не определили, что QTreeWidget не хватит? Как насчет QTreeView + QStandardItemModel? Что вам нужно, что требует от вас подкласса и создания вашей собственной модели? – jdi
@ Тит: Я думаю, что вы редактируете, а да, это указывает на ясность вопроса, значительно меняет то, что может спросить OP. Возможно, было бы лучше, если бы вы сделали комментарий и позволили OP настроить этот треск. Меня больше интересовало, почему ему нужна абстрактная модель, а не его вопрос о dropMimeData, который, по моему мнению, может быть неактуальным. – jdi
@jdi Я ничего не определил. Я начал с самой близкой вещи, которую мог найти, которая казалась близкой к тому, что мне нужно. Мне нужно одно дерево исходных элементов (один столбец имен на данный момент) и другое дерево, на которое я хочу удалить те itmes. На целевом дереве мне нужно переместить элементы в другое место. Я предполагаю, что это будет внутреннее перетаскивание, а затем удалить исходный элемент. Я использовал подклассифицированные модели только для того, чтобы указать, с каким деревом элементы поступают, поэтому я бы не удалял их из исходного дерева. – hosscomp