QGISのプラグイン作成 ツールチップサンプル


はじめに

このサンプルは、マップ上のマウスカーソルの位置に、ツールチップを表示させることができます。常に表示させると邪魔になるので、マウスカーソルの動きが止まった時に表示させるようにしました。

f:id:Chiakikun:20200530220359p:plain


使い方

ここから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行目で設定した時間マウスを止めていれば、このメソッドが呼ばれます。
コード全文


最後までご覧いただき、ありがとうございました。