QtQuick: экземпляр экземпляра как в OpenGL - PullRequest
0 голосов
/ 10 октября 2018

В приложении, которое мы разрабатываем, мы хотим создать «клоны» элементов, чтобы мы могли отображать их в другой части пользовательского интерфейса, сохраняя при этом большую часть их внутреннего состояния в синхронизации.Позвольте мне подробно остановиться на рабочем процессе:

Эти элементы являются «таблицами» и могут содержать тысячи подпунктов.Эта таблица находится в представлении прокрутки, так что пользователь может прокручивать (потенциально огромную) таблицу.

Идея состоит в том, что пользователь может временно показать «представление помощника», которое является точно представлением исходной таблицы., но с несколькими различными свойствами:

  • Индикатор прокрутки может отличаться от оригинала, позволяя видеть 2 разных места одной и той же таблицы
  • Выбор может быть различным, что позволяетперетащите из одного места таблицы в другое, даже если они находятся далеко друг от друга.

Это то, что имеет пользователь при открытии одного и того же файла в двух видах текстового редактора.

В настоящее время у меня есть два решения:

1) Создайте вторую таблицу со всеми подпунктами и поддерживайте их синхронизацию: это не самое умное решение с точки зрения производительности

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

Кто-нибудь пытался достичь такого рода экземпляров раньше, и какое решение было лучшим?

...