Qt 4.8
qitemeditorfactory.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QITEMEDITORFACTORY_H
43 #define QITEMEDITORFACTORY_H
44 
45 #include <QtCore/qmetaobject.h>
46 #include <QtCore/qbytearray.h>
47 #include <QtCore/qhash.h>
48 #include <QtCore/qvariant.h>
49 
51 
53 
54 QT_MODULE(Gui)
55 
56 #ifndef QT_NO_ITEMVIEWS
57 
58 class QWidget;
59 
61 {
62 public:
64 
65  virtual QWidget *createWidget(QWidget *parent) const = 0;
66  virtual QByteArray valuePropertyName() const = 0;
67 };
68 
69 template <class T>
71 {
72 public:
73  inline QItemEditorCreator(const QByteArray &valuePropertyName);
74  inline QWidget *createWidget(QWidget *parent) const { return new T(parent); }
75  inline QByteArray valuePropertyName() const { return propertyName; }
76 
77 private:
79 };
80 
81 template <class T>
83 {
84 public:
86  : propertyName(T::staticMetaObject.userProperty().name())
87  {}
88  inline QWidget *createWidget(QWidget *parent) const { return new T(parent); }
89  inline QByteArray valuePropertyName() const { return propertyName; }
90 
91 private:
93 };
94 
95 
96 template <class T>
98  : propertyName(avaluePropertyName) {}
99 
101 {
102 public:
103  inline QItemEditorFactory() {}
104  virtual ~QItemEditorFactory();
105 
106  virtual QWidget *createEditor(QVariant::Type type, QWidget *parent) const;
107  virtual QByteArray valuePropertyName(QVariant::Type type) const;
108 
109  void registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator);
110 
111  static const QItemEditorFactory *defaultFactory();
112  static void setDefaultFactory(QItemEditorFactory *factory);
113 
114 private:
116 };
117 
118 #endif // QT_NO_ITEMVIEWS
119 
121 
123 
124 #endif // QITEMEDITORFACTORY_H
int type
Definition: qmetatype.cpp:239
The QItemEditorFactory class provides widgets for editing item data in views and delegates.
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
The QItemEditorCreatorBase class provides an abstract base class that must be subclassed when impleme...
#define QT_MODULE(x)
Definition: qglobal.h:2783
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
QByteArray valuePropertyName() const
Reimplemented Function
#define Q_GUI_EXPORT
Definition: qglobal.h:1450
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
The QHash class is a template class that provides a hash-table-based dictionary.
Definition: qdatastream.h:66
QItemEditorFactory()
Constructs a new item editor factory.
QWidget * createWidget(QWidget *parent) const
Reimplemented Function
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
const char * name
#define Q_INLINE_TEMPLATE
Definition: qglobal.h:1713
QStandardItemEditorCreator()
Constructs an editor creator object.
Type
This enum type defines the types of variable that a QVariant can contain.
Definition: qvariant.h:95
The QItemEditorCreator class makes it possible to create item editor creator bases without subclassin...
QByteArray valuePropertyName() const
Reimplemented Function
The QStandardItemEditorCreator class provides the possibility to register widgets without having to s...
#define QT_END_HEADER
Definition: qglobal.h:137
QWidget * createWidget(QWidget *parent) const
Reimplemented Function
virtual ~QItemEditorCreatorBase()
Destroys the editor creator object.
QItemEditorCreator(const QByteArray &valuePropertyName)
QHash< QVariant::Type, QItemEditorCreatorBase * > creatorMap