MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtライブラリ - Qwtのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtライブラリ - Qwt
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Qwt(Qt Widget for Technical Application)は、Qtの拡張ライブラリであり、プロット、ダイアル、メータ等のウィジェットを提供する。<br> <br> ここでは、Qwtのインストールと使用方法を記載する。<br> <br><br> == Qwtのインストール == Qwtのビルドおよびコンパイルに必要な依存関係のライブラリをインストールする。<br> これらライブラリは、ビルドおよびコンパイル時のみ必要である。<br> sudo zypper install Mesa-devel Mesa-KHR-devel <br> [https://qwt.sourceforge.io/ Qwtの公式Webサイト]から最新のQwtをダウンロードする。<br> ダウンロードしたQwtを解凍するため、以下のコマンドを実行する。<br> tar xf qwt-x.x.x.tar.bz2 <br> 解凍したQwtディレクトリに移動して、qwtconfig.priファイルを以下のように編集する。<br> vi qwtconfig.pri <br> qwtconfig.priファイル # 変更前 unix { QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION # QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION-qt-$$QT_VERSION } win32 { QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION # QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION-qt-$$QT_VERSION } # 変更後 unix { QWT_INSTALL_PREFIX = <Qtのインストールディレクトリ>/Qwt-$$QWT_VERSION # QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION-qt-$$QT_VERSION } win32 { QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION # QWT_INSTALL_PREFIX = C:/Qwt-$$QWT_VERSION-qt-$$QT_VERSION } <br> Qwtプロジェクトをビルドおよびコンパイルして、インストールする。<br> qmake qwt.pro make -j 8 make install <br> <Qtのインストールディレクトリ>/Qwt-x.x.x/plugins/designer/libqwt_designer_plugin.soファイルを、以下のディレクトリにコピーする。 * Qt Creatorに統合されているQt Designer *: <Qtのインストールディレクトリ>/Tools/QtCreator/lib/Qt/plugins/designerディレクトリ *: 正常に読み込まれたプラグインおよび読み込みに失敗したプラグインを確認するには、 *: [ツール] - [フォームエディター] - [QtDesignerプラグインについて]を選択する。 *: <br> * スタンドアロンのQt Designer *: <Qtのインストールディレクトリ>/5.15.2/gcc_64/plugins/designerディレクトリ *: 正常に読み込まれたプラグインおよび読み込みに失敗したプラグインを確認するには、[ヘルプ] - [プラグイン]を選択する。 <br> また、Qwtの公式Webサイトには、[http://qwtpolar.sourceforge.net/ QwtPolar]、[http://qwtplot3d.sourceforge.net/ QwtPlot3D]、[http://soft.proindependent.com/qtiplot.html QtiPlot]等も存在する。<br> <br><br> == Qtプロジェクトの設定 == Qwtを使用するため、Qtプロジェクトファイルに以下の設定を追記する。<br> # QWT QWT_LOCATION = /home/suse/InstallSoftware/Qt/Qwt-6.1.6 INCLUDEPATH += $${QWT_LOCATION}/include/ LIBS += -L$${QWT_LOCATION}/lib -lqwt <br> Qt Designer画面を開いて、Qwtウィジェットが存在するか確認する。<br> <br><br> == PyQwt == PythonでQwtが使用できる[http://pyqwt.sourceforge.net/ PyQwtライブラリ]も存在する。<br> <br><br> == QwtPlot == プロット上に曲線や散布図を表示する場合、まず、Qt Designer画面にてQwtPlotウィジェットを配置する。<br> 次に、QwtPlotItemクラスのインスタンスにデータを渡して、QwtPlotクラスのインスタンスにアタッチする。<br> <br> QwtPlotの目盛りは自動的に最適に表示される。<br> <br> 一般的には、QwtPlotクラスまたはQwtPlotItemクラスを継承した派生クラスを作成して使用する。<br> Qwtライブラリのほとんどのサンプルでは、派生クラスを作成している。<br> <br><br> == プロット画面のコントロールを設定 == ズームやパンニングを行うプロット画面の制御は、それぞれQwtPlotZoomerクラス、QwtPlotPannerクラスを使用する。<br> QwtPlotZoomerクラスの設定は必須であり、設定しない場合は何も表示されない。<br> <br> QwtPlotZoomerクラスは、ズーム枠を描画するため、QwtPlotPickerクラス(ラバーバンドを扱うクラス)の派生クラスであり、<br> QwtPlotPannerクラスは、QwtPannerクラスの派生クラスであるため、設定方法は両者で異なる。<br> <br> 以下の例では、QwtPlotクラスの派生クラスを作成している。<br> <syntaxhighlight lang="c++"> // MyPlot.h(QwtPlotクラスの派生クラス) #pragma once #include "qwt_plot.h" class MyPlot : public QwtPlot { Q_OBJECT public: MyPlot(QWidget *parent = NULL); ~MyPlot(); private: // メンバ変数宣言 QwtPlotZoomer *m_pZoomer; QwtPlotPanner *m_pPanner; }; </syntaxhighlight> <br> QwtPlotZoomerクラスにおいて、MouseSelect1はズーム開始、MouseSelect2はリセット、MouseSelect3は1つ前のズームに戻るに対応させる。<br> ズームレベルはズームスタックに積まれており、通常は、ズームスタックを1つ戻ることでズームアウトする。<br> <syntaxhighlight lang="c++"> // MyPlot.cpp MyPlot::MyPlot(QWidget *parent) : QwtPlot(parent) { // Zoomerの設定 m_pZoomer = new QwtPlotZoomer(canvas()); // ズーム枠の色を設定 m_pZoomer->setRubberBandPen(QColor(Qt::darkBlue)); // マウスの座標値の色を設定 m_pZoomer->setTrackerPen(QColor(Qt::darkBlue)); // マウスボタンの割り当て m_pZoomer->setMousePattern(QwtEventPattern::MouseSelect1, Qt::LeftButton); m_pZoomer->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier); m_pZoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton); // 座標値の表示はズーム枠がアクティブなときのみ m_pZoomer->setTrackerMode(QwtPicker::ActiveOnly); // Pannerの設定 m_pPanner = new QwtPlotPanner(canvas()); // パンニングのボタンを中ボタンに設定 m_pPanner->setMouseButton(Qt::MiddleButton); setAutoReplot(true); } </syntaxhighlight> <br><br> == プロットの縦横比を固定 == プロットウィジェットの目盛りは、初期状態では、プロットウィンドウの縦横比に応じて変化する。<br> <br> ウィンドウの縦横比に関わらず、縦軸と横軸の目盛り幅を一定にする場合は、QwtPlotRescalerクラスを使用する。<br> QwtPlotRescalerクラスを使用する場合、QwtPlotクラスの派生クラスを作成することを推奨する。<br> <br> <u>特に、画像をプロットする場合、表示される画像の縦横比がウィンドウにより変化する。</u><br> <syntaxhighlight lang="c++"> // MyPlot.h(QwtPlotクラスの派生クラス) #pragma once #include "qwt_plot.h" #include <qwt_plot_rescaler.h> class MyPlot : public QwtPlot { Q_OBJECT public: MyPlot(QWidget *parent = NULL); ~MyPlot(); private: QwtPlotRescaler *m_pRescaler; }; </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // MyPlot.cpp #include "MyPlot.h" MyPlot::MyPlot(QWidget *parent) : QwtPlot(parent) { // QwtPlotRescalerのコンストラクタ、第1引数はQwtPlotCanvasオブジェクトへのポインタ、 // 第2引数は目盛り幅の基準軸、第3引数のように指定することで縦横比を固定 m_pRescaler = new QwtPlotRescaler(canvas(), QwtPlot::xBottom, QwtPlotRescaler::Fixed); m_pRescaler->setEnabled(true); // X軸は目盛りが両側に引き伸ばされるように指定 m_pRescaler->setExpandingDirection(QwtPlot::xBottom, QwtPlotRescaler::ExpandBoth); // Y軸は下方向に引き伸ばされるように指定 m_pRescaler->setExpandingDirection(QwtPlot::yLeft, QwtPlotRescaler::ExpandDown); // 目盛りの縦横比を指定 m_pRescaler->setAspectRatio(1.0); // 目盛り幅設定を実行 m_pRescaler->rescale(); setAutoReplot(true); } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtライブラリ - Qwt
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse