setROPumpTargetPressure doesnt have this check for 0. Is it something that we would need across all 3 set functions or not needed at all? Do we care that ovInitData is zero before assigning it to data if are overriding?
As far as I see there is MTreatmentOutletFlowData.cpp do ctrl+k,p MTreatmentOutletFlowData or ctrl+shift, MTreatmentOutletFlowData or F4 in your MTreatmentOutletFlowData.h to get in the cpp file to find it.
These are not dynamic texts, and calculating the width is not necessary. Please look at the implemented UI and set the width of each column as a constant value. You can then also delete textMetrics. Please note that it should have started with '_' if we were going to keep it.
Generally, please avoid these types of calculations.
Please add 'execRinsePumpMonitor' which checks the commanded vs measured speed tolerance check and trigger alarm if deviates beyond the limit. You may move this function into monitor.