[qet] [2879] Basic shapes: Items can be selected and moved (thanks joshua) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 2879
Author: abhishekm71
Date: 2014-02-27 10:55:54 +0100 (Thu, 27 Feb 2014)
Log Message:
-----------
Basic shapes: Items can be selected and moved (thanks joshua)
Modified Paths:
--------------
trunk/sources/diagramview.cpp
trunk/sources/qetgraphicsitem/qetshapeitem.cpp
trunk/sources/qetgraphicsitem/qetshapeitem.h
Modified: trunk/sources/diagramview.cpp
===================================================================
--- trunk/sources/diagramview.cpp 2014-02-26 23:57:22 UTC (rev 2878)
+++ trunk/sources/diagramview.cpp 2014-02-27 09:55:54 UTC (rev 2879)
@@ -524,6 +524,7 @@
return;
}
if (current_behavior == addingLine || current_behavior == addingRectangle || current_behavior == addingEllipse) {
+ newItem -> setFullyBuilt(true);
if (current_behavior == addingLine)
emit(LineAdded(false));
else if (current_behavior == addingRectangle)
Modified: trunk/sources/qetgraphicsitem/qetshapeitem.cpp
===================================================================
--- trunk/sources/qetgraphicsitem/qetshapeitem.cpp 2014-02-26 23:57:22 UTC (rev 2878)
+++ trunk/sources/qetgraphicsitem/qetshapeitem.cpp 2014-02-27 09:55:54 UTC (rev 2879)
@@ -3,7 +3,8 @@
QetShapeItem::QetShapeItem(QPointF p1, QPointF p2, ShapeType type, bool lineAngle,QGraphicsItem *parent) :
QetGraphicsItem(parent),
_shapeStyle(Qt::DashLine),
- _lineAngle(lineAngle)
+ _lineAngle(lineAngle),
+ _isFullyBuilt(false)
{
_shapeType = type;
_boundingRect = QRectF(p1, p2);
@@ -18,15 +19,56 @@
_shapeStyle = newStyle;
}
+void QetShapeItem::setFullyBuilt(bool isBuilt)
+{
+ _isFullyBuilt = isBuilt;
+ setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
+}
+
QRectF QetShapeItem::boundingRect() const
{
return _boundingRect;
}
+QPainterPath QetShapeItem::shape() const
+{
+ QPainterPath path;
+ QPainterPathStroker pps;
+ QRectF rect = boundingRect();
+
+ switch (_shapeType) {
+ case Line:
+ if (_lineAngle) {
+ path.moveTo(rect.topRight());
+ path.lineTo(rect.bottomLeft());
+ } else {
+ path.moveTo(rect.topLeft());
+ path.lineTo(rect.bottomRight());
+ }
+ //use @pps for grab line with bigger outerline
+ //more usefull
+ pps.setWidth(10);
+ path= pps.createStroke(path);
+ break;
+ case Rectangle:
+ path = QetGraphicsItem::shape();
+ break;
+ case Ellipse:
+ path.addEllipse(rect);
+ break;
+ default:
+ path = QetGraphicsItem::shape();
+ }
+
+ return path;
+}
+
void QetShapeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
QPen pen(Qt::black);
+ if (isSelected())
+ pen.setColor(Qt::red);
pen.setStyle(_shapeStyle);
painter->setPen(pen);
switch(_shapeType) {
Modified: trunk/sources/qetgraphicsitem/qetshapeitem.h
===================================================================
--- trunk/sources/qetgraphicsitem/qetshapeitem.h 2014-02-26 23:57:22 UTC (rev 2878)
+++ trunk/sources/qetgraphicsitem/qetshapeitem.h 2014-02-27 09:55:54 UTC (rev 2879)
@@ -21,6 +21,7 @@
ShapeType getType() const { return _shapeType; }
void setBoundingRect(QRectF rec) { _boundingRect = rec; }
void setLineAngle(bool lineAngle){ _lineAngle = lineAngle; }
+ void setFullyBuilt(bool isBuilt);
private:
ShapeType _shapeType;
@@ -28,12 +29,14 @@
QRectF _boundingRect;
bool _lineAngle; // false if line from topleft corner to bottomright corner
// and true if line from topright corner to bottomleft corner
+ bool _isFullyBuilt;
virtual void editProperty() {}
protected:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QRectF boundingRect() const;
+ QPainterPath shape() const;
};