QGISのプラグイン作成 ツールチップサンプル
はじめに
このサンプルは、マップ上のマウスカーソルの位置に、ツールチップを表示させることができます。常に表示させると邪魔になるので、マウスカーソルの動きが止まった時に表示させるようにしました。
使い方
ここからzipファイルをダウンロードしてインストールします。プラグインを実行した状態でマップにカーソルを動かすと、その位置の座標がツールチップに表示されます。
コード
class ToolTipSample(QgsMapTool): def start(self): maptool = ToolTipClass(self.canvas, 100) ~略~ class ToolTipClass(QgsMapTool): def __init__(self, canvas, ms): # msはミリ秒 QgsMapTool.__init__(self, canvas) self.canvas = canvas self.ms = ms # canvasMoveEventで設定した秒数(msで設定)経過したら呼ばれるメソッドを設定 self.timerMapTips = QTimer( canvas ) self.timerMapTips.timeout.connect( self.showMapTip ) def canvasMoveEvent(self, event): QToolTip.hideText() self.timerMapTips.start(self.ms) def showMapTip( self ): self.timerMapTips.stop() # 表示する値を設定する。 mappos = self.toMapCoordinates(self.canvas.mouseLastXY()) value = mappos if value == None: return text = str(value) QToolTip.showText( self.canvas.mapToGlobal( self.canvas.mouseLastXY() ), text, self.canvas ) ~略~
4行目 ツールチップの表示を、マウスカーソルの移動が止まってから0.1秒後に表示するように設定します。
18行目 4行目で設定した時間が経過したらツールチップを表示させるメソッドを実行するように設定します。
23行目 マウスを動かしたら、タイマーをスタートさせます。そのため、マウスを動かし続けている間は、タイマーはリセットされ続けることになります。
26行目 マウスを動かさなければタイマーは進むので、4行目で設定した時間マウスを止めていれば、このメソッドが呼ばれます。
コード全文
最後までご覧いただき、ありがとうございました。