I've been playing with a couple of Qt classes to get an easy-to-use SQL user interface. The combo QTableView and QSqlTableModel seemed very nice. Using the Designer, I could click an interface together and voilĂ , a nice grid where the user can edit the database.
There were a couple of hicks. If fields were NULL in the database, these could be filled in but never put back to NULL. After reading and trying out lots of stuff, I found the following classes are involved:
QTableView | Provides the general table widget on the screen |
QItemDelegate | Provides view/edit functions for specific cell types in the table widget on the screen |
QSqlTableModel | This class provides an easy-to-use API for a database table |
QAbstractProxyModel | A class that can be stuck over QSqlTableModel to transform, sort or filter data when it comes in or goes out of the QSqlTableModel |
You have to think about what functions exactly you want to change. If it's the overall interface, think about the QTableView. In my case, I wanted to enable the user to set fields to NULL. The normal QItemDelegate doesn't allow this.
In the end I avoided the whole issue by using one type field (which can contain 'string', 'integer', 'double' et cetera.