Это на самом деле одна горячая тема.
Я считаю, что вы можете зарегистрировать свои собственные POD и передать их вокруг ito и внутри QML-стороны (так же, как черные ящики - без доступа к любому члену, никогда не пробовали это). Чтобы получить доступ к элементам, можно использовать некоторый код обложки get/set, либо в виде методов на однояйцевом QML, либо на потомке QtObject, эффективно выступающем в качестве обертки для каждого экземпляра.
Динамические свойства в настоящее время не поддерживаются - вы можете заставить их работать, возможно, с довольно странным обманом, но это, вероятно, не стоит (но если вы не хотите, чтобы связывали с недвижимостью, намного проще, и все равно будут QObjects).
Неявное преобразование означало бы наличие своего рода препроцессора (возможно, это было бы возможно, но стоило бы много времени и суде, чтобы вернуть результат обратно в Qt (и поддерживать его на всю жизнь)).
Я бы так:
- , если объекты в вопросе могут быть объектами QObject, измерить производительность (и если это нормально, придерживайтесь его)
- если нет, то попытка прохождения непрозрачных стручков по значению , если это работает, создайте защитные леса и посмотрите, быстрее ли это/улучшает использование памяти, чем предыдущий вариант.
- Если привязки к свойствам не требуются, и требуется динамизм, изучите a) вложенные QVariants b) свойства динамического QObject
- если требования к экстремальной скорости/памяти должны быть выполнено, рассмотреть написание инструмента, который автоматически генерирует обертки и закреплять его в сборках трубопровода проекта Qt
Дело в том, пользовательских стручках не пользуются таким же уровнем поддержки встроенных сделать, и стандартная практика языка строится вокруг манипулируя мусор собранных экземпляров QObject (переданных везде по указателю, конечно), которые смотрели в обмен на изменения свойств типов:
- СТРУЧОК
- список
- QObject
- вариант (не отслеживается для изменений членов, iirc)
Спасибо за выживание! Вы были на Qt DevDays'13, возможно, на прошлой неделе (в Берлине)? Тогда мы могли бы встретиться! – mlvljr
Спасибо за всесторонний ответ. Я оставлю вопрос открытым еще на несколько дней, но потом, скорее всего, приму ваш ответ. Я не был в Берлине, кстати. –
Спасибо, моя почта находится в профиле, и я действительно чувствую, что пытаюсь немного поэкспериментировать с этим (если я получу достаточно времени); поэтому, если хотите, мы можем попробовать что-то.Берлинское мероприятие было приятным :) – mlvljr