QTableView (it is tabular data after all) and a model that supplies your data. You can control read/write ability with the flags method. Checkboxes using the relevant role in the data() call. The model knows when the user changes a value because setData() has to store it. A custom editor for a column can be done with a delegate and QComboBox etc.
The precise details of the solution are up to you and your customer.
Bookmarks