サイトマップ
お知らせ、メモ
案内板
うちのヘッドライン
 




トップ  >  Marble豆知識  >  Marbleウィジェットを使う

Marbleウィジェットを使う

Marbleウィジェットとはあの地球儀ウィンドウのことです。 これはほかのQtウィジェットと同じように自分のアプリケーションに埋め込むことができます。 ここでは最も基本的な使い方を説明します。

2014年時点では、ソースコードからビルドしないとインポートライブラリが作られないようなので、頑張ってビルド->インストールを行う必要があります。 ディスクに余裕があるならデバッグ版とリリース版の両方をインストールしておいたほうがいいでしょう。 また、ソースコードのINSTALLプロジェクトからはインポートライブラリはインストールされないので、手作業でコピーしておく必要があります。
以下では、C:/marble以下にソースコードからコンパイルしたmarbleがインストールされていて、インポートライブラリはmarble/libにコピーしてあるものとします。

付属のサンプルアプリケーションをコンパイル

Marbleのソースコードをダウンロードするとexampleフォルダの中に色々とサンプルコードが含まれています。 とりあえずはhello-marbleをコンパイルしてみましょう。

インクルードパスとインポートライブラリは以下の通りです。

インクルードパス:

  • C:\marble\include
  • C:\Qt\5.3\msvc2013\include\QtWidgets
  • C:\Qt\5.3\msvc2013\include
  • C:\Qt\5.3\msvc2013\include\QtCore
  • C:\Qt\5.3\msvc2013\include\QtGui

インポートライブラリ

以下はリリース版の場合です。 デバッグ版の場合はサフィックス"d"を付けてください(Qt5Cored.lib等)。
marbleおよびQtではデバッグ版/リリース版が異なるとiterator debug levelの不一致でビルドに失敗したりするので気を付けましょう。 また、ビルドには成功してもmarbleのプラグインのロードに失敗するので、白い地図のみが表示されたりします。

  • marblewidget.lib
  • Qt5Core.lib
  • Qt5Widgets.lib
  • qtmain.lib

marbleウィジェットはmarble付属のプラグインディレクトリとデータディレクトリの中身を読み込む必要があります。 このディレクトリは何も設定していない場合は、プログラム本体と同じディレクトリ以下にあるpluginsディレクトリとdataディレクトリに設定されます。 なので、作成するプログラムの保存先ディレクトリをmarbleのインストール先に設定するか、 それが嫌な場合は以下のコードをmarbleウィジェット作成の前に記述します。

#include <marble/MarbleDirs.h>

  MarbleDirs::setMarbleDataPath( "C:/marble/data/" );
  MarbleDirs::setMarblePluginPath("C:/marble/plugins");

メインウィンドウに埋め込んでみる

それでは例によってメインウィンドウにうめこんでみましょう。

まず、デザイナでメインウィンドウを作成し、中央にQtWidgetを配置します。

メインウィンドウ作成
メインウィンドウ作成

続いて、ウィジェットを格上げします。 以下のように設定します。

ウィジェット格上げ
ウィジェット格上げ設定
設定後
ウィジェット格上げ後

ソースコードのほうは以下のようにします。

main.cpp
   1: #include <QApplication>
   2: #include <marble/MarbleDirs.h>
   3: 
   4: #include "WndMain.h"
   5: 
   6: int main(int argc, char** argv)
   7: {
   8:   QApplication app(argc,argv);
   9: 
  10:   Marble::MarbleDirs::setMarbleDataPath( "C:/marble/data/" );
  11:   Marble::MarbleDirs::setMarblePluginPath("C:/marble/plugins");
  12: 
  13:   WndMain wnd;
  14:   wnd.show();
  15: 
  16:   return app.exec();
  17: }
メインウィンドウクラス
   1: #include "WndMain.h"
   2: 
   3: #include <marble/MarbleWidget.h>
   4: #include <marble/MarbleDirs.h>
   5: #include <marble/AbstractFloatItem.h>
   6: #include <marble/global.h>
   7: 
   8: 
   9: WndMain::WndMain()
  10: {
  11:   setupUi( this );
  12: 
  13:   mapWidget->setMapThemeId( "earth/openstreetmap/bluemarble.dgml" );
  14:   mapWidget->setShowBorders( true );
  15:   mapWidget->setShowCompass( true );
  16:   mapWidget->setShowOverviewMap( true );
  17: 
  18:   初期表示の中心座標を指定
  19:   mapWidget->centerOn(
  20:     Marble::GeoDataCoordinates(
  21:       139.833, 36.0, 0.0, Marble::GeoDataCoordinates::Degree )
  22:     );
  23: 
  24: }
  25: 
  26: 
  27: WndMain::~WndMain()
  28: {
  29: }

基本的にはhello-marble.cppの中身の配置を変えただけです。

実行結果
実行結果

ここまでくればあとはmarbleの色々な機能を使って好きなようにアプリケーションを作ることができるでしょう。


クリエイティブ・コモンズ・ライセンス
This documents by Yamate,N is licensed under a Creative Commons 表示 - 継承 3.0 非移植 License.
login