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 <QDate>
43#include <QLocale>
44
45#include "qtpropertymanager.h"
47#include "qtvariantproperty.h"
48
49int
50main(int argc, char** argv)
51{
52 QApplication app(argc, argv);
53
55
56 int i = 0;
57 QtProperty* topItem =
59 QString::number(i++) + QLatin1String(" Group Property"));
60
61 QtVariantProperty* item = variantManager->addProperty(
62 QVariant::Bool, QString::number(i++) + QLatin1String(" Bool Property"));
63 item->setValue(true);
64 topItem->addSubProperty(item);
65
66 item = variantManager->addProperty(QVariant::Int,
67 QString::number(i++) + QLatin1String(" Int Property"));
68 item->setValue(20);
69 item->setAttribute(QLatin1String("minimum"), 0);
70 item->setAttribute(QLatin1String("maximum"), 100);
71 item->setAttribute(QLatin1String("singleStep"), 10);
72 topItem->addSubProperty(item);
73
74 item = variantManager->addProperty(
75 QVariant::Int, QString::number(i++) + QLatin1String(" Int Property (ReadOnly)"));
76 item->setValue(20);
77 item->setAttribute(QLatin1String("minimum"), 0);
78 item->setAttribute(QLatin1String("maximum"), 100);
79 item->setAttribute(QLatin1String("singleStep"), 10);
80 item->setAttribute(QLatin1String("readOnly"), true);
81 topItem->addSubProperty(item);
82
83 item = variantManager->addProperty(QVariant::Double,
84 QString::number(i++) + QLatin1String(" Double Property"));
85 item->setValue(1.2345);
86 item->setAttribute(QLatin1String("singleStep"), 0.1);
87 item->setAttribute(QLatin1String("decimals"), 3);
88 topItem->addSubProperty(item);
89
90 item = variantManager->addProperty(
91 QVariant::Double, QString::number(i++) + QLatin1String(" Double Property (ReadOnly)"));
92 item->setValue(1.23456);
93 item->setAttribute(QLatin1String("singleStep"), 0.1);
94 item->setAttribute(QLatin1String("decimals"), 5);
95 item->setAttribute(QLatin1String("readOnly"), true);
96 topItem->addSubProperty(item);
97
98 item = variantManager->addProperty(QVariant::String,
99 QString::number(i++) + QLatin1String(" String Property"));
100 item->setValue("Value");
101 topItem->addSubProperty(item);
102
103 item = variantManager->addProperty(
104 QVariant::String, QString::number(i++) + QLatin1String(" String Property (Password)"));
105 item->setAttribute(QLatin1String("echoMode"), QLineEdit::Password);
106 item->setValue("Password");
107 topItem->addSubProperty(item);
108
109 // Readonly String Property
110 item = variantManager->addProperty(
111 QVariant::String, QString::number(i++) + QLatin1String(" String Property (ReadOnly)"));
112 item->setAttribute(QLatin1String("readOnly"), true);
113 item->setValue("readonly text");
114 topItem->addSubProperty(item);
115
116 item = variantManager->addProperty(QVariant::Date,
117 QString::number(i++) + QLatin1String(" Date Property"));
118 item->setValue(QDate::currentDate().addDays(2));
119 topItem->addSubProperty(item);
120
121 item = variantManager->addProperty(QVariant::Time,
122 QString::number(i++) + QLatin1String(" Time Property"));
123 item->setValue(QTime::currentTime());
124 topItem->addSubProperty(item);
125
126 item = variantManager->addProperty(QVariant::DateTime,
127 QString::number(i++) + QLatin1String(" DateTime Property"));
128 item->setValue(QDateTime::currentDateTime());
129 topItem->addSubProperty(item);
130
131 item = variantManager->addProperty(
132 QVariant::KeySequence, QString::number(i++) + QLatin1String(" KeySequence Property"));
133 item->setValue(QKeySequence(Qt::ControlModifier | Qt::Key_Q));
134 topItem->addSubProperty(item);
135
136 item = variantManager->addProperty(QVariant::Char,
137 QString::number(i++) + QLatin1String(" Char Property"));
138 item->setValue(QChar(386));
139 topItem->addSubProperty(item);
140
141 item = variantManager->addProperty(QVariant::Locale,
142 QString::number(i++) + QLatin1String(" Locale Property"));
143 item->setValue(QLocale(QLocale::Polish, QLocale::Poland));
144 topItem->addSubProperty(item);
145
146 item = variantManager->addProperty(QVariant::Point,
147 QString::number(i++) + QLatin1String(" Point Property"));
148 item->setValue(QPoint(10, 10));
149 topItem->addSubProperty(item);
150
151 item = variantManager->addProperty(QVariant::PointF,
152 QString::number(i++) + QLatin1String(" PointF Property"));
153 item->setValue(QPointF(1.2345, -1.23451));
154 item->setAttribute(QLatin1String("decimals"), 3);
155 topItem->addSubProperty(item);
156
157 item = variantManager->addProperty(QVariant::Size,
158 QString::number(i++) + QLatin1String(" Size Property"));
159 item->setValue(QSize(20, 20));
160 item->setAttribute(QLatin1String("minimum"), QSize(10, 10));
161 item->setAttribute(QLatin1String("maximum"), QSize(30, 30));
162 topItem->addSubProperty(item);
163
164 item = variantManager->addProperty(QVariant::SizeF,
165 QString::number(i++) + QLatin1String(" SizeF Property"));
166 item->setValue(QSizeF(1.2345, 1.2345));
167 item->setAttribute(QLatin1String("decimals"), 3);
168 item->setAttribute(QLatin1String("minimum"), QSizeF(0.12, 0.34));
169 item->setAttribute(QLatin1String("maximum"), QSizeF(20.56, 20.78));
170 topItem->addSubProperty(item);
171
172 item = variantManager->addProperty(QVariant::Rect,
173 QString::number(i++) + QLatin1String(" Rect Property"));
174 item->setValue(QRect(10, 10, 20, 20));
175 topItem->addSubProperty(item);
176 item->setAttribute(QLatin1String("constraint"), QRect(0, 0, 50, 50));
177
178 item = variantManager->addProperty(QVariant::RectF,
179 QString::number(i++) + QLatin1String(" RectF Property"));
180 item->setValue(QRectF(1.2345, 1.2345, 1.2345, 1.2345));
181 topItem->addSubProperty(item);
182 item->setAttribute(QLatin1String("constraint"), QRectF(0, 0, 50, 50));
183 item->setAttribute(QLatin1String("decimals"), 3);
184
185 item = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),
186 QString::number(i++) + QLatin1String(" Enum Property"));
187 QStringList enumNames;
188 enumNames << "Enum0"
189 << "Enum1"
190 << "Enum2";
191 item->setAttribute(QLatin1String("enumNames"), enumNames);
192 item->setValue(1);
193 topItem->addSubProperty(item);
194
195 item = variantManager->addProperty(QtVariantPropertyManager::flagTypeId(),
196 QString::number(i++) + QLatin1String(" Flag Property"));
197 QStringList flagNames;
198 flagNames << "Flag0"
199 << "Flag1"
200 << "Flag2";
201 item->setAttribute(QLatin1String("flagNames"), flagNames);
202 item->setValue(5);
203 topItem->addSubProperty(item);
204
205 item = variantManager->addProperty(
206 QVariant::SizePolicy, QString::number(i++) + QLatin1String(" SizePolicy Property"));
207 topItem->addSubProperty(item);
208
209 item = variantManager->addProperty(QVariant::Font,
210 QString::number(i++) + QLatin1String(" Font Property"));
211 topItem->addSubProperty(item);
212
213 item = variantManager->addProperty(QVariant::Cursor,
214 QString::number(i++) + QLatin1String(" Cursor Property"));
215 topItem->addSubProperty(item);
216
217 item = variantManager->addProperty(QVariant::Color,
218 QString::number(i++) + QLatin1String(" Color Property"));
219 topItem->addSubProperty(item);
220
221 QtVariantEditorFactory* variantFactory = new QtVariantEditorFactory();
222
223 QtTreePropertyBrowser* variantEditor = new QtTreePropertyBrowser();
224 variantEditor->setFactoryForManager(variantManager, variantFactory);
225 variantEditor->addProperty(topItem);
226 variantEditor->setPropertiesWithoutValueMarked(true);
227 variantEditor->setRootIsDecorated(false);
228
229 variantEditor->show();
230
231 int ret = app.exec();
232
233 delete variantManager;
234 delete variantFactory;
235 delete variantEditor;
236
237 return ret;
238}
QtBrowserItem * addProperty(QtProperty *property)
void setFactoryForManager(PropertyManager *manager, QtAbstractEditorFactory< PropertyManager > *factory)
The QtProperty class encapsulates an instance of a property.
void addSubProperty(QtProperty *property)
The QtTreePropertyBrowser class provides QTreeWidget based property browser.
void setPropertiesWithoutValueMarked(bool mark)
The QtVariantEditorFactory class provides widgets for properties created by QtVariantPropertyManager ...
The QtVariantPropertyManager class provides and manages QVariant based properties.
virtual QtVariantProperty * addProperty(int propertyType, const QString &name=QString())
The QtVariantProperty class is a convenience class handling QVariant based properties.
void setAttribute(const QString &attribute, const QVariant &value)
void setValue(const QVariant &value)