You can't share the same QTableWidgetItem among tables, because the QTableWidget takes ownership of the item.

If you convert to QTableView and implement a QAbstractItemModel to hold the information you want to display, then you can use the same model instance in as many tables as you want. Each view can have a completely independent sort of the model. When you edit, you are editing the model, not the view of the model, so changes to the model are reflected in every view.

Because I've been able to use QTableWidget::cellChanged correctly but I've no idea how to use QTableWidget::itemChanged, how do you use it, an example please.
There's essentially no difference. Both signals are emitted when the data in the cell changes. In one case, the widget is telling you the cell indexes, which you can use to retrieve the QTableWidgetItem for that cell; in the other case, the widget is telling you the QTableWidgetItem pointer, which you can use to retrieve the cell indexes where it lives.