I think QGraphicsView is definitely the way to go here.
Creating a custom QTableView means not only rewriting the painting but also the widget interaction part, which could be a nightmare.
What is wrong displaying the hexagons in a gview? You could still minimize memory usage by storing hexagon types as pixmaps and just use QGraphicsPixmapItem's with a clipping mask applied(a hexagon) to define its bounds.
Regards
Bookmarks