Added a new class to handle the pseudo-buttons on the canvas.

Added a new class, named Button, that has a clicked() signal,
and can be connected to the view to emulate buttons. While
I know that Qt supports widgets on canvas - I think it's too
nineties to have such square controls on something that can have
rounded borders.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
Tomaz Canabrava 2013-06-21 16:44:38 -03:00
parent 01d1a49d94
commit 28f48227f7
2 changed files with 33 additions and 1 deletions

View file

@ -43,6 +43,14 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
depthString = new QGraphicsSimpleTextItem();
depthString->setFlag(QGraphicsItem::ItemIgnoresTransformations);
scene()->addItem(depthString);
plusDepth = new Button();
plusDepth->setPos(15, 1);
scene()->addItem(plusDepth);
plusTime = new Button();
plusTime->setPos( 95, 90);
scene()->addItem(plusTime);
}
void DivePlannerGraphics::mouseDoubleClickEvent(QMouseEvent* event)
@ -352,3 +360,13 @@ double Ruler::minimum() const
return min;
}
Button::Button(QObject* parent): QObject(parent), QGraphicsPixmapItem()
{
setPixmap(QPixmap(":plus").scaled(20,20));
setFlag(ItemIgnoresTransformations);
}
void Button::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
emit clicked();
}

View file

@ -5,6 +5,16 @@
#include <QGraphicsPathItem>
#include <QDialog>
class Button : public QObject, public QGraphicsPixmapItem {
Q_OBJECT
public:
explicit Button(QObject* parent = 0);
protected:
virtual void mousePressEvent(QGraphicsSceneMouseEvent* event);
signals:
void clicked();
};
class DiveHandler : public QGraphicsEllipseItem{
public:
DiveHandler();
@ -52,7 +62,6 @@ protected:
void clear_generated_deco();
void create_deco_stop();
bool isPointOutOfBoundaries(const QPointF& point);
private:
void moveActiveHandler(const QPointF& pos);
@ -68,6 +77,11 @@ private:
Ruler *depthLine;
QGraphicsSimpleTextItem *depthString;
Button *plusTime;
Button *plusDepth;
Button *lessTime;
Button *lessDepth;
};
namespace Ui{