Группа панелей управления

Во время исполнения проекта, при активации какого-либо объекта (клике по нему), мы вызываем панели просмотра/редактирования свойств объектов. Например, мы можем: посмотреть состояние исполнительного механизма, задать адрес канала ввода/вывода, изменить время срабатывания датчика и т.п.

Как это работает?

Для проекта визуализации (VisualProject) создаётся дочерняя группа панелей управления (VisEditorsGroup), в которую помещаются классы умеющие редактировать свойства определённых визуальных классов. Например, для управления оборудованием (VisUnit и его дочерние элементы VisSubUnit ) есть класс VisUnitEditor.

При инициализации выполнения проекта VisEditorsGroup рекурсивно пробегает по всем компонентам проекта VisualProject к которому он принадлежит. Для каждого компонента он «ищет» подходящую панель управления. Если такая находится, то сигнал activated() компонента связывается со слотом showEditor() панели управления, иначе сигнал связывается со слотом закрывающим все ранее вызваные панели.

Таким образом, визуальные компоненты ни чего не должны знать о панелях которые ими управляют.

См. VisEditorsGroup::workInit, VisEditorsGroup::setControl, VisBaseEditor::setControlOn, VisUnitEditor::setControlOn и т.п.