В приложении, которое мы разрабатываем, мы хотим создать «клоны» элементов, чтобы мы могли отображать их в другой части пользовательского интерфейса, сохраняя при этом большую часть их внутреннего состояния в синхронизации.Позвольте мне подробно остановиться на рабочем процессе:
Эти элементы являются «таблицами» и могут содержать тысячи подпунктов.Эта таблица находится в представлении прокрутки, так что пользователь может прокручивать (потенциально огромную) таблицу.
Идея состоит в том, что пользователь может временно показать «представление помощника», которое является точно представлением исходной таблицы., но с несколькими различными свойствами:
- Индикатор прокрутки может отличаться от оригинала, позволяя видеть 2 разных места одной и той же таблицы
- Выбор может быть различным, что позволяетперетащите из одного места таблицы в другое, даже если они находятся далеко друг от друга.
Это то, что имеет пользователь при открытии одного и того же файла в двух видах текстового редактора.
В настоящее время у меня есть два решения:
1) Создайте вторую таблицу со всеми подпунктами и поддерживайте их синхронизацию: это не самое умное решение с точки зрения производительности
2) Создайте второй элемент, который пуст и содержит "захват "кадрового буфера оригинального стола.События должны быть перенаправлены в исходную таблицу, используя что-то вроде QQuickItem :: childAt (x, y), чтобы восстановить исходный элемент, в который нужно отправить событие.Выбор можно сделать независимым путем обновления состояния выбора перед захватом кадрового буфера.Хотя это решение потенциально намного лучше с точки зрения производительности, я боюсь, что все это очень хакерски.
Кто-нибудь пытался достичь такого рода экземпляров раньше, и какое решение было лучшим?