Table should detect index changes and re-add the variables accordingly. Suggestion: AbstractVariable should provide a valueChanged() signal, the Table object registers to this signal for all variables in an entry. If the signal is fired, the table checks whether the TableEntry index changed, and if so, re-adds the variables. I think QSignalMapper is needed.