QGISのレイヤーパネルにデフォルトで透明度スライダーを表示していますか?


13

layer-propertiesを介して手動で各レイヤーを有効にする代わりに、新しいレイヤーを追加した直後に、レイヤーウィンドウにデフォルトで透明度スライダーを表示することは可能ですか?

回答:


11

これは、QGIS- 開発者フォーラムで簡単に言及されており、QgsMapLayer :: setCustomPropertylayerを使用して、レイヤーの埋め込みウィジェットを有効にする必要があります。その後、itemAddedイベントを追加して、レイヤーが追加されるたびに透明度ウィジェットで自動的に表示されるようにすることができます。

したがって、Pythonコンソールで次のようなものを使用できます。

def transparency_slider():
    for layer in QgsMapLayerRegistry.instance().mapLayers().values():
        if layer.customProperty("embeddedWidgets/count") != 1 or layer.customProperty("embeddedWidgets/0/id") != u'transparency':
            layer.setCustomProperty("embeddedWidgets/count", 1)
            layer.setCustomProperty("embeddedWidgets/0/id", "transparency")         
        else:
            pass
        qgis.utils.iface.legendInterface().refreshLayerSymbology(layer)

# Connect "itemAdded" event to "transparency_slider" function
legend = qgis.utils.iface.legendInterface()
legend.itemAdded.connect(transparency_slider)

Win7 64ビット用QGIS 2.18.3でテスト済み。


例:

シェープファイルを追加する前に、Pythonコンソールにコードを挿入します。

前

結果:

後


それは素晴らしいです!透明度スライダーを使用せずに後続のベクターレイヤーを取り込む場合、どのようにオフにしますか?
マーティンヒューギ

1
@MartinHügi- legend.itemAdded.disconnect(transparency_slider)Pythonコンソールで入力するだけ;)
ジョセフ

@MartinHügi-ありがたいです=)
ジョセフ

1
すばらしいスクリプト!QGISを再起動するときにもこれを維持する方法はありますか、または再起動のたびにスクリプトを実行する必要がありますか?
-blabbath

@poellinf-この投稿で説明されているように、QGISプロジェクトを開くときにPythonスクリプトを実行する方法はありますか?startup.pyスクリプト(QGISが起動するたびにスクリプトを実行)またはプロジェクトマクロ(プロジェクトでのみ実行)を作成できます。いずれかの方法を使用して、追加する必要がありimport qgisます。from qgis.core import QgsMapLayerRegistryあなたのスクリプトで:)
ジョセフ

6

Raster Transparencyと呼ばれるプラグインがあり、名前が示すように、選択したラスターレイヤーの透明度を変更するためのスライダーを備えたドッキング可能なパネルを開きます。

[プラグイン]> [プラグインの管理とインストール]に移動し、検索してインストールすると、ツールバーに新しい関連アイコンが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.