Hi

I had the same problem. schall_l's idea to subclass QItemEditorFactory is basically right, but it doesn't work, since QItemEditorFactory ist a base class with no functionality. You have to use the previously installed default factory (which is an instance of the private class QDefaultItemEditorFactory).

Qt Code:
  1. class ItemEditorFactory : public QItemEditorFactory
  2. {
  3. public:
  4. explicit ItemEditorFactory(const QItemEditorFactory* standardFactory);
  5. virtual QWidget* createEditor(QVariant::Type type, QWidget* parent) const;
  6. static void installAsStandardFactory();
  7. private:
  8. const QItemEditorFactory* m_standardFactory;
  9. };
To copy to clipboard, switch view to plain text mode 
Qt Code:
  1. ItemEditorFactory::ItemEditorFactory(const QItemEditorFactory* standardFactory)
  2. , m_standardFactory(standardFactory)
  3. {
  4. }
  5.  
  6. QWidget* ItemEditorFactory::createEditor(QVariant::Type type, QWidget* parent) const
  7. {
  8. switch (type)
  9. {
  10. case QVariant::Color:
  11. {
  12. ColorListEditor *cb = new ColorListEditor(parent);
  13. cb->setFrame(false);
  14. return cb;
  15. }
  16. default:
  17. return m_standardFactory->createEditor(type, parent);
  18. }
  19. }
  20.  
  21. static void ItemEditorFactory::installAsStandardFactory()
  22. {
  23. QItemEditorFactory::setDefaultFactory(new ItemEditorFactory(QItemEditorFactory::defaultFactory()));
  24. }
To copy to clipboard, switch view to plain text mode 

Just call ItemEditorFactory::installAsStandardFactory() in your code.

Happy Qoding.