summaryrefslogtreecommitdiffstats
path: root/weather/src/pixmapbutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'weather/src/pixmapbutton.cpp')
-rw-r--r--weather/src/pixmapbutton.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/weather/src/pixmapbutton.cpp b/weather/src/pixmapbutton.cpp
new file mode 100644
index 0000000..6ec8be5
--- /dev/null
+++ b/weather/src/pixmapbutton.cpp
@@ -0,0 +1,30 @@
+#include "pixmapbutton.h"
+
+// PixmapButton
+
+PixmapButton::PixmapButton(qreal minSize, const QPixmap &pixmap, QGraphicsItem *parent)
+ : QGraphicsPixmapItem(pixmap, parent)
+ , m_minSize(minSize)
+{
+ setShapeMode(BoundingRectShape);
+}
+
+void PixmapButton::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+ Q_UNUSED(event);
+ emit clicked();
+}
+
+QPainterPath PixmapButton::shape() const
+{
+ return QGraphicsItem::shape();
+}
+
+QRectF PixmapButton::boundingRect() const
+{
+ QRectF result(QGraphicsPixmapItem::boundingRect());
+ qreal hMargin = m_minSize < result.width() ? 0 : (m_minSize - result.width()) / 2;
+ qreal vMargin = m_minSize < result.height() ? 0 : (m_minSize - result.height()) / 2;
+ result.adjust(-hMargin, -vMargin, hMargin, vMargin);
+ return result;
+}