Я предполагаю, что ваша карта рельсов должна быть только схемой реального расположения путей, вы можете создавать компоненты, которые все размещены на сетке, и для каждой ячейки сетки вы реализуете простой алгоритм расположения, в зависимости от ваших требований Вы можете просто заявить, что одна ячейка сетки может иметь только один фактический элемент управления (и сделать ячейки меньше), или для более крупных ячеек у вас есть фиксированные точки для каждого типа элемента управления, или просто расположить элементы управления в ячейке слева направо / сверху вниз, все, что работает для вас. Вы также можете разделить сами клетки на подэлементы, чтобы ограничить элементы управления. Чтобы при масштабировании целого, каждая ячейка могла сообщить элементу управления, какой размер должен быть.
Это также может помочь реализовать вещи в виде слоев на дисплее, например, отделить слой дорожки от слоя управления.
Вы работаете над очень специфическим "нетрадиционным" пользовательским интерфейсом, вам понадобятся некоторые решения, которые соответствуют вашей проблеме.
Я не знаю, делаете ли вы это уже, но подумайте, сможете ли вы реализовать подход, основанный на данных, для конфигурации вашего пользовательского интерфейса. Не кодируйте макет жестко, отделите функциональность макета от фактических рабочих частей и переместите их в файл, который можно легко изменить.
Похоже, у вас есть какое-то рабочее решение, но вы сказали: «Я не предпочитаю это решение, потому что я не хочу вычислять координаты X, Y для каждого графика», если у вас есть графические элементы управления, которые можно разместить в любом месте на Несмотря на то, что код, несмотря на код, вряд ли стоит иметь редактор, в котором пользователь может разместить эти элементы управления. Это может потребовать не так много усилий, как вы думаете, особенно если вы уже используете файл конфигурации для своего интерфейса вместо жестко заданных значений.
Недавно я проделал большую работу по изменению обычного вида элементов qt с помощью стилей, но я не думаю, что обычных частей qt-gui будет достаточно для вашей работы, но подсистема QGraphicsView
, вероятно, будет хорошая подгонка, он хорошо масштабируется и хорошо обрабатывает взаимодействия с большим количеством элементов, но трудно дать вам более конкретный ответ, не зная больше деталей