Time for action – drawing an oscillogram
Let's further extend our widget to become a simple oscillogram renderer. For that we have to make the widget remember a set of values and draw them as a series of lines.
Let's start by adding a QList<quint16>
member variable that holds a list of unsigned 16-bit integer values. We will also add slots for adding values to the list and for clearing the list, as shown:
class Widget : public QWidget { // ... public slots: void addPoint(unsigned yVal) { m_points << qMax(0u, yVal); update(); } void clear() { m_points.clear(); update(); } protected: // ... QList<quint16> m_points; };
Note that each modification of the list invokes a method called update()
. This schedules a paint event so that our widget can be redrawn with the new values.
Drawing code is also easy; we just iterate over the list and draw symmetric blue lines based on the values from the list. Since the lines are vertical, they don't suffer from...