How do I tell Qt to always show an editor in a QTableView?

Georg Schölly picture Georg Schölly · Feb 9, 2009 · Viewed 8.1k times · Source

I've got a QTableView for which I want to display the last column always in edit mode. (It's a QComboBox where the user should be able to always change the value.)

I think I've seen the solution in the Qt documentation, but I can't find it anymore. Is there a simple way of doing it?

I think I could archive this effect by using openPersistentEditor() for every cell, but I'm looking for a better way. (Like specifying it only one time for the whole column.)

Answer

Georg Schölly picture Georg Schölly · Feb 19, 2009

There are two possibilities:

Using setIndexWidget, but Trolltech writes:

This function should only be used to display static content within the visible area corresponding to an item of data. If you want to display custom dynamic content or implement a custom editor widget, subclass QItemDelegate instead.

(And it breaks the Model/View pattern…)

Or using a delegate's paint method. But here you have to implement everything like enabled/disabled elements yourself.