Esimerkki, jossa liukupakĺkin arvo viedään Qwtplot:n arvoksi. Toimii qwt versiolla 6.0.1.

TARGET = SimulaattoriQwt
TEMPLATE = app
INCLUDEPATH += /home/koneauto/QtSDK/qwt-6.0.1/src //Kirjoita tähän oikea polku
LIBS += -L/home/koneauto/QtSDK/qwt-6.0.1/lib -lqwt //Kirjoita tähän oikea polku
SOURCES += main.cpp\
        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <qwt_legend.h>
#include <qwt_scale_draw.h>
#include <qwt_math.h>
#include <qwt_plot_item.h>
#include <qwt_plot_curve.h>
#include <qwt_text.h>
#include <QTimer>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QwtPlot *EkaPlotti;
    QwtPlotCurve *EkaKurvi;
    QwtText Kurvi;
    QwtText Y_Akseli;
    QwtText X_Akseli;
    QTimer *timer;//osoitin ajastimeen
    int Arvo;
    int indeksi;
    int EdellinenY;
    double x[10000],y[10000];
private slots:
    void PiirraPlotiin(int Y);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    timer = new QTimer(this);//luo uusi ajastin
    ui->Slider->setRange(0,100);
    //ui->Slider->setRange(0,100,1,1);
    connect(ui->Slider, SIGNAL(valueChanged(int)),this, SLOT(PiirraPlotiin(int)));
    Kurvi.setText("Eka kuva");
    Y_Akseli.setText("Y-akseli");
    X_Akseli.setText("X-akseli");
    EkaKurvi  = new QwtPlotCurve();//new luo kekoon (heap) uuden muuttujan tilavarauksen
    EkaKurvi->setPen(QPen(Qt::red));
    EkaKurvi->attach(ui->qwtPlot);
    ui->qwtPlot->setAxisTitle(0,Y_Akseli);
    ui->qwtPlot->setAxisTitle(2,X_Akseli);
    indeksi=0;
    EdellinenY=0;
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::PiirraPlotiin(int Y)
{
    if((int)Y != EdellinenY)
    {
        x[indeksi]=(int)indeksi;
        y[indeksi]=Y;
        EkaKurvi->setSamples(x,y, indeksi);//laitetaan data käppyriin
        ui-> qwtPlot->replot(); //piirretään
        indeksi++;
        if(indeksi>9999)indeksi=0;
        EdellinenY=(int)Y;
    }
}
  • No labels
You must log in to comment.