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 件のコメント:
コメントを投稿