Моя проблема заключается в следующем: я хочу использовать перетаскивание в моем QTreeWidget.Мой QtreeWidgetItem имеет следующие флаги Enabled | selectable |Drag | Drop.
Он работает для элемента, но не для остальных (Ошибка Qvariant :: Сохранить недопустимый тип для сохранения)
Это потому, что мы делаем некоторые : setdata(QVariant::fromvalue<...
Я понимаю, так как я хочу использовать пользовательские данные, мне нужно, чтобы QVariant понимал мой класс, и для этого мне нужно, чтобы у моего класса был конструктор по умолчанию, конструктор копирования, деструктор и оператор 2overlord << и >>.
friend QDataStream & operator << (QDataStream &arch, const MyClass & object)
После того, как мне нужно Q_DECLARE_METATYPE(MyClass)
и зарегистрируйте моего оператора с помощью:
qRegisterMetaTypeStreamOperators<MyClass>("MyClass")
НоЯ не могу заставить это работать.(все еще ошибка Qvariant :: Сохранить недопустимый тип для сохранения)
Мне нужна помощь, чтобы понять, куда все идет.Мои операторы перегрузок определены в моем классе (.H)
Должен ли мой Q_DECLARE_METATYPE быть объявлен в конце моего класса?(.h) будет ли проблема, потому что класс SOMME наследуется от него?или потому что он имеет чистую функцию?
Я знаю, что многие люди используют qRegisterMetaTypeStreamOperators в основном, но я не могу этого сделать, могу ли я использовать его где-то еще (в конструкторе одного моего класса или это вызовет проблему (как многократное объявление или многократный вызов как функция соединения))
Ошибка никогда не изменится, это нормально, или должен ли Qt сказать мне: «он распознает класс, который я хочу сохранить, но ему не нужно все»?
Хорошо, я ответил на некоторые мои вопросы: Q_DECLARE_METATYPE не обязательно должен быть в .H (сейчас работайте с моим .cpp). Вы можете использовать ваши qRegisterMetaTypeStreamOperators в конструкторе (как соединение)Когда QT пересмотрит ваш класс, он покажет другое сообщение (сейчас моя проблема в том, что мой класс - абстрактный класс)
Я пытаюсь заставить его работать с моей текущей архитектурой
MyClass (Abstract)
- MyClassTemplate : MyClass
-MyClassA : MyClassTemplate<MyClassA>
-MyClassB : MyClassTemplate<MyClassB>