Qwt で用意してあるスライダーを使ってみる。
とりあえず、表示してみる。
#include "mainwindow.h" #include <QApplication> #include <qwt_plot.h> #include <qwt_slider.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); //MainWindow w; //w.show(); QwtPlot *plot = new QwtPlot; // スライダー関係 QwtSlider *slider = new QwtSlider(plot); slider->setOrientation(Qt::Horizontal);//横位置のスライダー plot->resize( 600, 400 ); plot->show(); return a.exec(); }表示だけは、さすがに簡単でした。
キャンバスの中にスライダーを表示してみる。
キャンバスはプロットエリアか?
#include "mainwindow.h" #include <QApplication> #include <qwt_plot.h> #include <qwt_slider.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); //MainWindow w; //w.show(); QwtPlot *plot = new QwtPlot; //キャンバスを取得 QWidget *myCanbas = plot->canvas(); // スライダー関係 QwtSlider *slider = new QwtSlider(myCanbas); slider->setOrientation(Qt::Horizontal);//横位置のスライダー plot->resize( 600, 400 ); plot->show(); return a.exec(); }
スライダーをキャンバスの下に置きたいので、レイアウトを考えてみる。
#include "mainwindow.h" #include <QApplication> #include <qwt_plot.h> #include <qwt_slider.h> #include <QBoxLayout> int main(int argc, char *argv[]) { QApplication a(argc, argv); //MainWindow w; //w.show(); QwtPlot *plot = new QwtPlot; //キャンバスを取得 QWidget *myCanbas = plot->canvas(); // スライダー関係 QwtSlider *slider = new QwtSlider(); slider->setOrientation(Qt::Horizontal);//横位置のスライダー // レイアウトを考える QVBoxLayout *layout = new QVBoxLayout;//レイアウトを設定 上から下 layout->addStretch(1);//上に空白を開ける layout->addWidget(slider);//レイアウトにスライダーを入れる // キャンバスにレイアウトを設定 myCanbas->setLayout(layout); plot->resize( 600, 400 ); plot->show(); return a.exec(); }
やっぱりキャンバスの中で無い方がいいのかな?
スライダーの位置を取得してみる。
main.h
#ifndef MAIN_H #define MAIN_H #include <QWidget> #include <QApplication> #include <qwt_plot.h> #include <qwt_slider.h> #include <QBoxLayout> class MyMain : public QWidget { Q_OBJECT public: MyMain(QWidget *parent = 0): QWidget(parent) { } public slots: void setValueToTheLabel(double value); }; #endif // MAIN_H
main.cpp
#include "main.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); //MainWindow w; //w.show(); QwtPlot *plot = new QwtPlot; //キャンバスを取得 QWidget *myCanbas = plot->canvas(); // スライダー関係 QwtSlider *slider = new QwtSlider(); slider->setOrientation(Qt::Horizontal);//横位置のスライダー MyMain *mySlot = new MyMain; QObject::connect( slider, SIGNAL(valueChanged(double)), mySlot, SLOT(setValueToTheLabel(double)) ); // レイアウトを考える QVBoxLayout *layout = new QVBoxLayout;//レイアウトを設定 上から下 layout->addStretch(1);//上に空白を開ける layout->addWidget(slider);//レイアウトにスライダーを入れる // キャンバスにレイアウトを設定 myCanbas->setLayout(layout); plot->resize( 600, 400 ); plot->show(); return a.exec(); } void MyMain::setValueToTheLabel(double value) { qDebug() << QString::number( value ); }スライダーを移動させるとQT Creatorのアプリケーション出力に値が表示される。
QwtSlider の目盛表示
スライダーと目盛幅
https://github.com/yamato8/QwtQwtSliderTest.git
スライダーの目盛の始点と終点の指定
slider->setScale(0,150);
スライダーの位置を取得
slider->value();
スライダーのステップ数
slider->setTotalSteps(200);
0 件のコメント:
コメントを投稿