crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перемещение элементов между несколькими ListModel
eternal_ego
  опции профиля:
сообщение 18.7.2014, 9:08
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 15.3.2012
Пользователь №: 3266

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток!

Имеется некий интерфейс на QML. Всю работу с ним хочется реализовать так, чтобы не трогать C++ код, то есть обойтись QML со скриптами.

Интерфейс представляет собой несколько вкладок TabView, в каждой из которых - ScrollView, содержащий ListView.

Задача: осуществить "перекидывание" компонентов из одного ListView в другой так, чтобы они не пересоздавались. По сути, просто вынуть из одной модели и воткнуть в другую. Но вот незадача, в ListModel нельзя воткнуть уже готовое. А без ListModel компоненты во вьюшке складываются плохо.

Вопрос: как это обойти?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 18.7.2014, 11:46
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Возможно, тебе вот это поможет http://qt-project.org/doc/qt-5/qml-qtquick-drag.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eternal_ego
  опции профиля:
сообщение 18.7.2014, 11:53
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 15.3.2012
Пользователь №: 3266

Спасибо сказали: 0 раз(а)




Репутация:   0  


Боюсь, это не совсем то. Перетягивать компоненты я могу только в другие визуальные компоненты, но никак не в ListModel.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 18.7.2014, 19:24
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Тогда, не совсем понятен вопрос :(
Тебе надо уже в готовую модель добавить новый компонент?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eternal_ego
  опции профиля:
сообщение 18.7.2014, 19:34
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 15.3.2012
Пользователь №: 3266

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не совсем. Брать готовый компонент из существующей модели А и перемещать его в существующую модель Б. Если делать ручками в обход, это будет выглядеть как запоминание всех параметров А, удаление А, создание Б, применение запомненных параметров к Б. Долго, муторно, глупо. Вот парента у компонента поменять можно, но в данном случае это не то.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Trisch
  опции профиля:
сообщение 19.7.2014, 1:57
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


Так у модели есть функции добавдения элементов ListModel::append и удаления ListModel::remove ( int index ). В итоге пользуешься моделью как списком.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eternal_ego
  опции профиля:
сообщение 19.7.2014, 5:04
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 15.3.2012
Пользователь №: 3266

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот я об этом и писал выше. Эти методы не позволяют взять уже созданный компонент, они создают уже нового делегата. Никаких проблем, если делегат простой: применил при создании пару параметров, и вуаля. Но если в делегате несколько десятков элементов с зависимостями? Тут это уже не удобно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eternal_ego
  опции профиля:
сообщение 23.7.2014, 8:37
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 15.3.2012
Пользователь №: 3266

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ан нет, был категорически не прав. Оказывается, при использовании append и insert можно передавать не только "параметры" делегата (в фигурных скобках), но и объект целиком, который может быть получен функцией get от ListModel. Правда, при этом нужно быть аккуратным с существующими соединениями по сигналам, возможно часть их надо рассоединять и создавать новые соединения (в зависимости от конкретного используемого компонента).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 23:33