56 handleMouseClickEvent(event);
62 handleMouseClickEvent(event);
66CanvasView::handleMouseClickEvent(QMouseEvent* event)
87 moving->moveBy(p.x() - moving_start.x(), p.y() - moving_start.y());
96 QMenu* editMenu = menuBar()->addMenu(tr(
"Edit"));
97 QMenu* newObjectMenu = editMenu->addMenu(tr(
"New Object"));
99 QAction* newRectangleAction =
new QAction(tr(
"Rectangle"),
this);
100 connect(newRectangleAction, SIGNAL(triggered(
bool)),
this, SLOT(newRectangle()));
101 newObjectMenu->addAction(newRectangleAction);
103 QAction* newLineAction =
new QAction(tr(
"Line"),
this);
104 connect(newLineAction, SIGNAL(triggered(
bool)),
this, SLOT(newLine()));
105 newObjectMenu->addAction(newLineAction);
107 QAction* newEllipseAction =
new QAction(tr(
"Ellipse"),
this);
108 connect(newEllipseAction, SIGNAL(triggered(
bool)),
this, SLOT(newEllipse()));
109 newObjectMenu->addAction(newEllipseAction);
111 QAction* newTextAction =
new QAction(tr(
"Text"),
this);
112 connect(newTextAction, SIGNAL(triggered(
bool)),
this, SLOT(newText()));
113 newObjectMenu->addAction(newTextAction);
115 deleteAction =
new QAction(tr(
"Delete Object"),
this);
116 connect(deleteAction, SIGNAL(triggered(
bool)),
this, SLOT(deleteObject()));
117 editMenu->addAction(deleteAction);
119 QAction* clearAction =
new QAction(tr(
"Clear All"),
this);
120 connect(clearAction, SIGNAL(triggered(
bool)),
this, SLOT(clearAll()));
121 editMenu->addAction(clearAction);
123 QAction* fillAction =
new QAction(tr(
"Fill View"),
this);
124 connect(fillAction, SIGNAL(triggered(
bool)),
this, SLOT(fillView()));
125 editMenu->addAction(fillAction);
129 connect(variantManager,
130 SIGNAL(valueChanged(
QtProperty*,
const QVariant&)),
132 SLOT(valueChanged(
QtProperty*,
const QVariant&)));
138 setCentralWidget(canvasView);
140 QDockWidget* dock =
new QDockWidget(
this);
141 addDockWidget(Qt::RightDockWidgetArea, dock);
144 propertyEditor->setFactoryForManager(variantManager, variantFactory);
145 dock->setWidget(propertyEditor);
157MainWindow::newRectangle()
159 QtCanvasItem* item = addRectangle();
165MainWindow::newEllipse()
167 QtCanvasItem* item = addEllipse();
175 QtCanvasItem* item = addLine();
183 QtCanvasItem* item = addText();
189MainWindow::deleteObject()
202MainWindow::clearAll()
211MainWindow::fillView()
213 for (
int i = 0; i < 10; i++)
225MainWindow::addRectangle()
227 QtCanvasPolygonalItem* item =
228 new QtCanvasRectangle(rand() % canvas->width(), rand() % canvas->height(), 50, 50, canvas);
229 int z = rand() % 256;
230 item->
setBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8));
231 item->
setPen(QPen(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8), 4));
238MainWindow::addEllipse()
240 QtCanvasPolygonalItem* item =
new QtCanvasEllipse(50, 50, canvas);
241 item->
setBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8));
242 item->
move(rand() % canvas->width(), rand() % canvas->height());
243 item->
setZ(rand() % 256);
251 QtCanvasLine* item =
new QtCanvasLine(canvas);
254 rand() % canvas->width() - canvas->width() / 2,
255 rand() % canvas->height() - canvas->height() / 2);
256 item->
move(rand() % canvas->width(), rand() % canvas->height());
257 item->
setPen(QPen(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8), 6));
258 item->
setZ(rand() % 256);
266 QtCanvasText* item =
new QtCanvasText(canvas);
268 item->
setColor(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8));
269 item->
move(rand() % canvas->width(), rand() % canvas->height());
270 item->
setZ(rand() % 256);
278 if (item != currentItem)
283 variantManager->setValue(idToProperty[QLatin1String(
"xpos")], item->
x());
284 variantManager->setValue(idToProperty[QLatin1String(
"ypos")], item->
y());
285 variantManager->setValue(idToProperty[QLatin1String(
"zpos")], item->
z());
289MainWindow::updateExpandState()
291 QList<QtBrowserItem*> list = propertyEditor->topLevelItems();
292 QListIterator<QtBrowserItem*> it(list);
296 QtBrowserItem* item = it.next();
297 QtProperty* prop = item->
property();
298 idToExpanded[propertyToId[prop]] = propertyEditor->isExpanded(item);
307 QMap<QtProperty*, QString>::ConstIterator itProp = propertyToId.constBegin();
309 while (itProp != propertyToId.constEnd())
315 propertyToId.clear();
316 idToProperty.clear();
322 deleteAction->setEnabled(
false);
328 QtVariantProperty* property;
330 property = variantManager->addProperty(QVariant::Double, tr(
"Position X"));
331 property->setAttribute(QLatin1String(
"minimum"), 0);
332 property->setAttribute(QLatin1String(
"maximum"), canvas->width());
333 property->setValue(item->
x());
334 addProperty(property, QLatin1String(
"xpos"));
336 property = variantManager->addProperty(QVariant::Double, tr(
"Position Y"));
337 property->setAttribute(QLatin1String(
"minimum"), 0);
338 property->setAttribute(QLatin1String(
"maximum"), canvas->height());
339 property->setValue(item->
y());
340 addProperty(property, QLatin1String(
"ypos"));
342 property = variantManager->addProperty(QVariant::Double, tr(
"Position Z"));
343 property->setAttribute(QLatin1String(
"minimum"), 0);
344 property->setAttribute(QLatin1String(
"maximum"), 256);
345 property->setValue(item->
z());
346 addProperty(property, QLatin1String(
"zpos"));
350 QtCanvasRectangle* i = (QtCanvasRectangle*)item;
352 property = variantManager->addProperty(QVariant::Color, tr(
"Brush Color"));
353 property->setValue(i->
brush().color());
354 addProperty(property, QLatin1String(
"brush"));
356 property = variantManager->addProperty(QVariant::Color, tr(
"Pen Color"));
357 property->setValue(i->
pen().color());
358 addProperty(property, QLatin1String(
"pen"));
360 property = variantManager->addProperty(QVariant::Size, tr(
"Size"));
361 property->setValue(i->
size());
362 addProperty(property, QLatin1String(
"size"));
366 QtCanvasLine* i = (QtCanvasLine*)item;
368 property = variantManager->addProperty(QVariant::Color, tr(
"Pen Color"));
369 property->setValue(i->
pen().color());
370 addProperty(property, QLatin1String(
"pen"));
372 property = variantManager->addProperty(QVariant::Point, tr(
"Vector"));
374 addProperty(property, QLatin1String(
"endpoint"));
378 QtCanvasEllipse* i = (QtCanvasEllipse*)item;
380 property = variantManager->addProperty(QVariant::Color, tr(
"Brush Color"));
381 property->setValue(i->
brush().color());
382 addProperty(property, QLatin1String(
"brush"));
384 property = variantManager->addProperty(QVariant::Size, tr(
"Size"));
385 property->setValue(QSize(i->
width(), i->
height()));
386 addProperty(property, QLatin1String(
"size"));
390 QtCanvasText* i = (QtCanvasText*)item;
392 property = variantManager->addProperty(QVariant::Color, tr(
"Color"));
393 property->setValue(i->
color());
394 addProperty(property, QLatin1String(
"color"));
396 property = variantManager->addProperty(QVariant::String, tr(
"Text"));
397 property->setValue(i->
text());
398 addProperty(property, QLatin1String(
"text"));
400 property = variantManager->addProperty(QVariant::Font, tr(
"Font"));
401 property->setValue(i->
font());
402 addProperty(property, QLatin1String(
"font"));
409 propertyToId[property] = id;
410 idToProperty[id] = property;
411 QtBrowserItem* item = propertyEditor->addProperty(property);
413 if (idToExpanded.contains(
id))
415 propertyEditor->setExpanded(item, idToExpanded[
id]);
420MainWindow::valueChanged(
QtProperty* property,
const QVariant& value)
422 if (!propertyToId.contains(property))
432 QString
id = propertyToId[property];
434 if (
id == QLatin1String(
"xpos"))
436 currentItem->setX(
value.toDouble());
438 else if (
id == QLatin1String(
"ypos"))
440 currentItem->setY(
value.toDouble());
442 else if (
id == QLatin1String(
"zpos"))
444 currentItem->setZ(
value.toDouble());
446 else if (
id == QLatin1String(
"text"))
450 QtCanvasText* i = (QtCanvasText*)currentItem;
454 else if (
id == QLatin1String(
"color"))
458 QtCanvasText* i = (QtCanvasText*)currentItem;
462 else if (
id == QLatin1String(
"brush"))
467 QtCanvasPolygonalItem* i = (QtCanvasPolygonalItem*)currentItem;
468 QBrush b = i->
brush();
469 b.setColor(
value.value<QColor>());
473 else if (
id == QLatin1String(
"pen"))
478 QtCanvasPolygonalItem* i = (QtCanvasPolygonalItem*)currentItem;
480 p.setColor(
value.value<QColor>());
484 else if (
id == QLatin1String(
"font"))
488 QtCanvasText* i = (QtCanvasText*)currentItem;
492 else if (
id == QLatin1String(
"endpoint"))
496 QtCanvasLine* i = (QtCanvasLine*)currentItem;
497 QPoint p =
value.value<QPoint>();
501 else if (
id == QLatin1String(
"size"))
505 QtCanvasRectangle* i = (QtCanvasRectangle*)currentItem;
506 QSize
s =
value.value<QSize>();
511 QtCanvasEllipse* i = (QtCanvasEllipse*)currentItem;
512 QSize
s =
value.value<QSize>();
QList< QtCanvasItem * > QtCanvasItemList
void contentsMouseMoveEvent(QMouseEvent *event)
void itemClicked(QtCanvasItem *item)
void itemMoved(QtCanvasItem *item)
void contentsMouseDoubleClickEvent(QMouseEvent *event)
void contentsMousePressEvent(QMouseEvent *event)
MainWindow(QWidget *parent=0)
QtProperty * property() const
void setSize(int w, int h)
virtual void setEnabled(bool yes)
void move(double x, double y)
void setPoints(int x1, int y1, int x2, int y2)
QPoint startPoint() const
virtual void setBrush(QBrush b)
virtual void setPen(QPen p)
void setSize(int w, int h)
void setText(const QString &)
void setFont(const QFont &)
void setColor(const QColor &)
QtCanvas * canvas() const
const QMatrix & inverseWorldMatrix() const
QtCanvasItemList collisions(const QPoint &) const
The QtProperty class encapsulates an instance of a property.
The QtTreePropertyBrowser class provides QTreeWidget based property browser.
The QtVariantEditorFactory class provides widgets for properties created by QtVariantPropertyManager ...
The QtVariantPropertyManager class provides and manages QVariant based properties.
The QtVariantProperty class is a convenience class handling QVariant based properties.
double s(double t, double s0, double v0, double a0, double j)
std::shared_ptr< Value > value()