The setData() method should emit dataChanged(), with appropriate parameters. If you call the base QAbstractItemModel::dataChanged() it will do it for you; if you reimplement in setData() without calling the base method you must do the emit yourself explicitly:
When reimplementing the setData() function, this signal must be emitted explicitly.
Because it's a signal, it doesn't matter which class you are in. The emit should come from wherever the setData() is defined; other classes can hook onto the signal with a slot even if signal & slot are in different classes.