#ifndef QITEMEDITORFACTORY_H
#define QITEMEDITORFACTORY_H 
#include <QtCore/qbytearray.h>
#include <QtCore/qhash.h>
#include <QtCore/qvariant.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
#ifndef QT_NO_ITEMVIEWS
class QItemEditorCreatorBase{
   public: virtual inline ~QItemEditorCreatorBase();
   public: virtual struct QWidget* createWidget(struct QWidget* parent) const = 0;
   public: virtual class QByteArray valuePropertyName() const = 0;
};
template < typename T > class QItemEditorCreator: public QItemEditorCreatorBase{
   public: inline struct QWidget* createWidget(struct QWidget* parent) const
   public: inline class QByteArray valuePropertyName() const
   private: class QByteArray propertyName;
   public: inline QItemEditorCreator(class QByteArray const & avaluePropertyName);
};
template < typename T > class QStandardItemEditorCreator: public QItemEditorCreatorBase{
   public: inline QStandardItemEditorCreator();
   public: inline struct QWidget* createWidget(struct QWidget* parent) const
   public: inline class QByteArray valuePropertyName() const
   private: class QByteArray propertyName;
};
class QItemEditorFactory{
   public: inline QItemEditorFactory();
   public: virtual ~QItemEditorFactory();
   public: virtual struct QWidget* createEditor(enum QVariant::Type type, struct QWidget* parent) const
   public: virtual class QByteArray valuePropertyName(enum QVariant::Type type) const
   public: void registerEditor(enum QVariant::Type type, class QItemEditorCreatorBase* creator);
   public: static class QItemEditorFactory const * defaultFactory();
   public: static void setDefaultFactory(class QItemEditorFactory* factory);
   private: class QHash < enum QVariant::Type, class QItemEditorCreatorBase* > creatorMap;
};
#endif // QT_NO_ITEMVIEWS
#endif // QITEMEDITORFACTORY_H