main.cpp
Go to the documentation of this file.
1/****************************************************************************
2**
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the Qt Solutions component.
7**
8** $QT_BEGIN_LICENSE:BSD$
9** You may use this file under the terms of the BSD license as follows:
10**
11** "Redistribution and use in source and binary forms, with or without
12** modification, are permitted provided that the following conditions are
13** met:
14** * Redistributions of source code must retain the above copyright
15** notice, this list of conditions and the following disclaimer.
16** * Redistributions in binary form must reproduce the above copyright
17** notice, this list of conditions and the following disclaimer in
18** the documentation and/or other materials provided with the
19** distribution.
20** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21** of its contributors may be used to endorse or promote products derived
22** from this software without specific prior written permission.
23**
24**
25** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36**
37** $QT_END_LICENSE$
38**
39****************************************************************************/
40
41#include <QApplication>
42#include <QGridLayout>
43#include <QIcon>
44#include <QLabel>
45#include <QMap>
46#include <QScrollArea>
47
49#include "qteditorfactory.h"
51#include "qtpropertymanager.h"
53
54int
55main(int argc, char** argv)
56{
57 QApplication app(argc, argv);
58
59 QWidget* w = new QWidget();
60
61 QtBoolPropertyManager* boolManager = new QtBoolPropertyManager(w);
62 QtIntPropertyManager* intManager = new QtIntPropertyManager(w);
64 QtSizePropertyManager* sizeManager = new QtSizePropertyManager(w);
65 QtRectPropertyManager* rectManager = new QtRectPropertyManager(w);
67 QtEnumPropertyManager* enumManager = new QtEnumPropertyManager(w);
69
70 QtProperty* item0 = groupManager->addProperty("QObject");
71
72 QtProperty* item1 = stringManager->addProperty("objectName");
73 item0->addSubProperty(item1);
74
75 QtProperty* item2 = boolManager->addProperty("enabled");
76 item0->addSubProperty(item2);
77
78 QtProperty* item3 = rectManager->addProperty("geometry");
79 item0->addSubProperty(item3);
80
81 QtProperty* item4 = sizePolicyManager->addProperty("sizePolicy");
82 item0->addSubProperty(item4);
83
84 QtProperty* item5 = sizeManager->addProperty("sizeIncrement");
85 item0->addSubProperty(item5);
86
87 QtProperty* item7 = boolManager->addProperty("mouseTracking");
88 item0->addSubProperty(item7);
89
90 QtProperty* item8 = enumManager->addProperty("direction");
91 QStringList enumNames;
92 enumNames << "Up"
93 << "Right"
94 << "Down"
95 << "Left";
96 enumManager->setEnumNames(item8, enumNames);
97 QMap<int, QIcon> enumIcons;
98 enumIcons[0] = QIcon(":/demo/images/up.png");
99 enumIcons[1] = QIcon(":/demo/images/right.png");
100 enumIcons[2] = QIcon(":/demo/images/down.png");
101 enumIcons[3] = QIcon(":/demo/images/left.png");
102 enumManager->setEnumIcons(item8, enumIcons);
103 item0->addSubProperty(item8);
104
105 QtProperty* item9 = intManager->addProperty("value");
106 intManager->setRange(item9, -100, 100);
107 item0->addSubProperty(item9);
108
109 QtCheckBoxFactory* checkBoxFactory = new QtCheckBoxFactory(w);
110 QtSpinBoxFactory* spinBoxFactory = new QtSpinBoxFactory(w);
111 QtSliderFactory* sliderFactory = new QtSliderFactory(w);
112 QtScrollBarFactory* scrollBarFactory = new QtScrollBarFactory(w);
113 QtLineEditFactory* lineEditFactory = new QtLineEditFactory(w);
114 QtEnumEditorFactory* comboBoxFactory = new QtEnumEditorFactory(w);
115
117 editor1->setFactoryForManager(boolManager, checkBoxFactory);
118 editor1->setFactoryForManager(intManager, spinBoxFactory);
119 editor1->setFactoryForManager(stringManager, lineEditFactory);
120 editor1->setFactoryForManager(sizeManager->subIntPropertyManager(), spinBoxFactory);
121 editor1->setFactoryForManager(rectManager->subIntPropertyManager(), spinBoxFactory);
122 editor1->setFactoryForManager(sizePolicyManager->subIntPropertyManager(), spinBoxFactory);
123 editor1->setFactoryForManager(sizePolicyManager->subEnumPropertyManager(), comboBoxFactory);
124 editor1->setFactoryForManager(enumManager, comboBoxFactory);
125
126 editor1->addProperty(item0);
127
129 editor2->addProperty(item0);
130
132 editor3->setFactoryForManager(boolManager, checkBoxFactory);
133 editor3->setFactoryForManager(intManager, spinBoxFactory);
134 editor3->setFactoryForManager(stringManager, lineEditFactory);
135 editor3->setFactoryForManager(sizeManager->subIntPropertyManager(), spinBoxFactory);
136 editor3->setFactoryForManager(rectManager->subIntPropertyManager(), spinBoxFactory);
137 editor3->setFactoryForManager(sizePolicyManager->subIntPropertyManager(), spinBoxFactory);
138 editor3->setFactoryForManager(sizePolicyManager->subEnumPropertyManager(), comboBoxFactory);
139 editor3->setFactoryForManager(enumManager, comboBoxFactory);
140
141 editor3->addProperty(item0);
142
143 QScrollArea* scroll3 = new QScrollArea();
144 scroll3->setWidgetResizable(true);
145 scroll3->setWidget(editor3);
146
148 editor4->setFactoryForManager(boolManager, checkBoxFactory);
149 editor4->setFactoryForManager(intManager, scrollBarFactory);
150 editor4->setFactoryForManager(stringManager, lineEditFactory);
151 editor4->setFactoryForManager(sizeManager->subIntPropertyManager(), spinBoxFactory);
152 editor4->setFactoryForManager(rectManager->subIntPropertyManager(), spinBoxFactory);
153 editor4->setFactoryForManager(sizePolicyManager->subIntPropertyManager(), sliderFactory);
154 editor4->setFactoryForManager(sizePolicyManager->subEnumPropertyManager(), comboBoxFactory);
155 editor4->setFactoryForManager(enumManager, comboBoxFactory);
156
157 editor4->addProperty(item0);
158
159 QScrollArea* scroll4 = new QScrollArea();
160 scroll4->setWidgetResizable(true);
161 scroll4->setWidget(editor4);
162
164 editor5->setFactoryForManager(boolManager, checkBoxFactory);
165 editor5->setFactoryForManager(intManager, scrollBarFactory);
166 editor5->setFactoryForManager(stringManager, lineEditFactory);
167 editor5->setFactoryForManager(sizeManager->subIntPropertyManager(), spinBoxFactory);
168 editor5->setFactoryForManager(rectManager->subIntPropertyManager(), spinBoxFactory);
169 editor5->setFactoryForManager(sizePolicyManager->subIntPropertyManager(), sliderFactory);
170 editor5->setFactoryForManager(sizePolicyManager->subEnumPropertyManager(), comboBoxFactory);
171 editor5->setFactoryForManager(enumManager, comboBoxFactory);
172
173 editor5->addProperty(item0);
174
175 QScrollArea* scroll5 = new QScrollArea();
176 scroll5->setWidgetResizable(true);
177 scroll5->setWidget(editor5);
178
179 QGridLayout* layout = new QGridLayout(w);
180 QLabel* label1 = new QLabel("Editable Tree Property Browser");
181 QLabel* label2 = new QLabel("Read Only Tree Property Browser, editor factories are not set");
182 QLabel* label3 = new QLabel("Group Box Property Browser");
183 QLabel* label4 = new QLabel("Group Box Property Browser with different editor factories");
184 QLabel* label5 = new QLabel("Button Property Browser");
185 label1->setWordWrap(true);
186 label2->setWordWrap(true);
187 label3->setWordWrap(true);
188 label4->setWordWrap(true);
189 label5->setWordWrap(true);
190 label1->setFrameShadow(QFrame::Sunken);
191 label2->setFrameShadow(QFrame::Sunken);
192 label3->setFrameShadow(QFrame::Sunken);
193 label4->setFrameShadow(QFrame::Sunken);
194 label5->setFrameShadow(QFrame::Sunken);
195 label1->setFrameShape(QFrame::Panel);
196 label2->setFrameShape(QFrame::Panel);
197 label3->setFrameShape(QFrame::Panel);
198 label4->setFrameShape(QFrame::Panel);
199 label5->setFrameShape(QFrame::Panel);
200 label1->setAlignment(Qt::AlignCenter);
201 label2->setAlignment(Qt::AlignCenter);
202 label3->setAlignment(Qt::AlignCenter);
203 label4->setAlignment(Qt::AlignCenter);
204 label5->setAlignment(Qt::AlignCenter);
205
206 layout->addWidget(label1, 0, 0);
207 layout->addWidget(label2, 0, 1);
208 layout->addWidget(label3, 0, 2);
209 layout->addWidget(label4, 0, 3);
210 layout->addWidget(label5, 0, 4);
211 layout->addWidget(editor1, 1, 0);
212 layout->addWidget(editor2, 1, 1);
213 layout->addWidget(scroll3, 1, 2);
214 layout->addWidget(scroll4, 1, 3);
215 layout->addWidget(scroll5, 1, 4);
216 w->show();
217
218 int ret = app.exec();
219 delete w;
220 return ret;
221}
QtAbstractPropertyBrowser provides a base class for implementing property browsers.
QtBrowserItem * addProperty(QtProperty *property)
void setFactoryForManager(PropertyManager *manager, QtAbstractEditorFactory< PropertyManager > *factory)
QtProperty * addProperty(const QString &name=QString())
The QtBoolPropertyManager class provides and manages boolean properties.
The QtButtonPropertyBrowser class provides a drop down QToolButton based property browser.
The QtCheckBoxFactory class provides QCheckBox widgets for properties created by QtBoolPropertyManage...
The QtEnumEditorFactory class provides QComboBox widgets for properties created by QtEnumPropertyMana...
The QtEnumPropertyManager provides and manages enum properties.
void setEnumNames(QtProperty *property, const QStringList &names)
void setEnumIcons(QtProperty *property, const QMap< int, QIcon > &icons)
The QtGroupBoxPropertyBrowser class provides a QGroupBox based property browser.
The QtGroupPropertyManager provides and manages group properties.
The QtIntPropertyManager provides and manages int properties.
void setRange(QtProperty *property, int minVal, int maxVal)
The QtLineEditFactory class provides QLineEdit widgets for properties created by QtStringPropertyMana...
The QtProperty class encapsulates an instance of a property.
void addSubProperty(QtProperty *property)
The QtRectPropertyManager provides and manages QRect properties.
QtIntPropertyManager * subIntPropertyManager() const
The QtScrollBarFactory class provides QScrollBar widgets for properties created by QtIntPropertyManag...
The QtSizePolicyPropertyManager provides and manages QSizePolicy properties.
QtIntPropertyManager * subIntPropertyManager() const
QtEnumPropertyManager * subEnumPropertyManager() const
The QtSizePropertyManager provides and manages QSize properties.
QtIntPropertyManager * subIntPropertyManager() const
The QtSliderFactory class provides QSlider widgets for properties created by QtIntPropertyManager obj...
The QtSpinBoxFactory class provides QSpinBox widgets for properties created by QtIntPropertyManager o...
The QtStringPropertyManager provides and manages QString properties.
The QtTreePropertyBrowser class provides QTreeWidget based property browser.