Вернуться наверх
aco.ifmo.ru photonic
вернуться в оглавление предыдущая глава предыдущий параграф следующий параграф следующая глава


Пример 4.
Пример рисования графика и полутонового изображения выборки при помощи QCustomPlot

4.1. Описание диалога (файл dqtplotdialog.h)

///////////////////////////////////////////////////////////////////////////////////////////////////
// dqtplotdialog.h
// Пример диалогового окна для рисования графика и полутонового изображения выборки
// при помощи QCustomPlot (http://www.qcustomplot.com/index.php/introduction).
// 
// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru
// Университет ИТМО
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef DQTPLOTDIALOG_H
#define DQTPLOTDIALOG_H

#include <QDialog>

#include "ui_dqtplotdialog.h"

class QCustomPlot;
class SampleComplex;

//-------------------------------------------------------------------------------------------------
class DQtPlotDialog : public QDialog
{
    Q_OBJECT

public:
    // конструктор
    DQtPlotDialog(QWidget* parent = 0, Qt::WindowFlags f = 0);
    // деструктор
    ~DQtPlotDialog();

    // обработка событий
public slots:
    // отклик на нажатие кнопки "нарисовать"
    void onBtnDraw();
    // перехватывается событие Resize для диалогового окна
    // (это нужно чтобы сохранить одинаковоые масштабы по осям Х и Y для полутонового отображения)
    void resizeEvent(QResizeEvent *event);

private:  
    // рисование графика центральных сечений по Х и Y для двумерного массива
    // sample - массив комплексных чисел, отображается только вещественная часть
    // qGraph - имя виджета, на котором рисовать
    // параметры графика:
    // dx - шаг по оси Х
    // sXName, sYName - подписи к осям Х, Y
    void DrawGraph(SampleComplex& sample, QCustomPlot *qGraph, double dx, QString sXName, QString sYName);

    // рисование полутонового отображения двумерного массива
    // sample - массив комплексных чисел, отображается только вещественная часть
    // qGraph - имя виджета, на котором рисовать
    // параметры графика:
    // dx - шаг по оси Х
    // sXName, sYName - подписи к осям Х, Y
    void DrawGrayscale(SampleComplex& sample, QCustomPlot *qGrayscale, double dx, QString sXName, QString sYName);

    // функция, задающая одинаковый масштаб по осям X и Y
    // должна вызываться при первоначальной отрисовке и при масштабировании
    void RescaleCustomPlot(QCustomPlot *qPlot);


    /// ресурсы диалога
    Ui::DQtPlotDialog m_ui;
};
//-------------------------------------------------------------------------------------------------
#endif // DQTPLOTDIALOG_H