Qt 5.10 Book Examples
Turtle.h
Go to the documentation of this file.
1 // ======================================================================
2 // Turtle.h
3 // ======================================================================
4 // This file is a part of the book
5 // "Qt 5.10 Professional programming with C++"
6 // http://qt-book.com
7 // ======================================================================
8 // Copyright (c) 2017 by Max Schlee
9 // ======================================================================
10 
11 #pragma once
12 
13 #include <QtWidgets>
14 
15 // ======================================================================
16 class Turtle : public QWidget {
17 Q_OBJECT
18 private:
19  QPixmap m_pix;
20  QPainter m_painter;
21 
22 public:
23  Turtle(QWidget* pwgt = 0) : QWidget(pwgt)
24  , m_pix(400, 400)
25  , m_painter(&m_pix)
26  {
27  setFixedSize(m_pix.size());
28  init();
29  }
30 
31 protected:
32  void init()
33  {
34  m_pix.fill(Qt::yellow);
35  m_painter.translate(rect().center());
36  m_painter.rotate(-90);
37  }
38 
39  virtual void paintEvent(QPaintEvent*)
40  {
41  QPainter painter(this);
42  painter.drawPixmap(rect(), m_pix);
43  }
44 
45 public slots:
46  void forward(int n)
47  {
48  m_painter.drawLine(0, 0, n, 0);
49  m_painter.translate(n, 0);
50  repaint();
51  }
52 
53  void back(int n)
54  {
55  m_painter.drawLine(0, 0, -n, 0);
56  m_painter.translate(-n, 0);
57  repaint();
58  }
59 
60  void left(int nAngle)
61  {
62  m_painter.rotate(-nAngle);
63  }
64 
65  void right(int nAngle)
66  {
67  m_painter.rotate(nAngle);
68  }
69 
70  void reset()
71  {
72  m_painter.resetTransform();
73  init();
74  repaint();
75  }
76 };
77 
78 
void left(int nAngle)
Definition: Turtle.h:60
virtual void paintEvent(QPaintEvent *)
Definition: Turtle.h:39
Turtle(QWidget *pwgt=0)
Definition: Turtle.h:23
void back(int n)
Definition: Turtle.h:53
void right(int nAngle)
Definition: Turtle.h:65
Definition: Turtle.h:16
void reset()
Definition: Turtle.h:70
void forward(int n)
Definition: Turtle.h:46
void init()
Definition: Turtle.h:32