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...