33 void drawGrid(QPainter *painter);
34 void drawCurves(QPainter *painter);
35 enum { Margin = 50 };
36 QToolButton *zoomInButton;
37 QToolButton *zoomOutButton;
38 QMap
39 QVector
40 int curZoom;
41 bool rubberBandIsShown;
42 QRect rubberBandRect;
43 QPixmap pixmap;
44 };
В закрытой секции класса мы объявляем несколько функций для рисования виджета, константу и несколько переменных—членов. Константа
Среди переменных—членов находится
45 class PlotSettings
46 {
47 public:
48 PlotSettings;
49 void scroll(int dx, int dy);
50 void adjust;
51 double spanX const { return maxX - minX; }
52 double spanY const { return maxY - minY; }
53 double minX;
54 double maxX;
55 int numXTicks;
56 double minY;
57 double maxY;
58 int numYTicks;
59 private:
60 static void adjustAxis(double &min, double &max, int &numTicks);
61 };
62 #endif
Класс
По условному соглашению значение в
Теперь давайте рассмотрим файл реализации:
001 #include
002 #include
003 #include "plotter.h"
Мы включаем необходимые заголовочные файлы и импортируем все символы пространства имен
004 Plotter::Plotter(QWidget *parent)
005 : QWidget(parent)
006 {
007 setBackgroundRole(QPalette::Dark);
008 setAutoFillBackground(true);
009 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
010 setFocusPolicy(Qt::StrongFocus);
011 rubberBandIsShown = false;
012 zoomInButton = new QToolButton(this);
013 zoomInButton->setIcon(QIcon(":/images/zoomin.png"));
014 zoomInButton->adjustSize;
015 connect(zoomInButton, SIGNAL(clicked), this, SLOT(zoomIn));
016 zoomOutButton = new QToolButton(this);
017 zoomOutButton->setIcon(QIcon(":/images/zoomout.png"));
018 zoomOutButton->adjustSize;
019 connect(zoomOutButton, SIGNAL(clicked), this, SLOT(zoomOut));
020 setPlotSettings(PlotSettings);
021 }
Вызов