QSettingsの変更をすぐに適用する方法は?


15

PyQGISでは、レイヤーパネル(または目次)のグループを太字にするなど、さまざまな設定を変更できます。

from PyQt4.QtCore import QSettings
QSettings().setValue("/Qgis/legendGroupsBold", True)

設定は、オプションまたは入力から確認できるように書き込まれます。

QSettings().value("/Qgis/legendGroupsBold")
>>> u'true'

しかし、それは適用されません。私は使用すると思った

QSettings().sync()

助けになるかもしれませんが、残念ながらそうではありません。適用する唯一の方法は、GUI(Settings > Options)に移動し、OKQGISをクリックするか再起動することです。

PyQGISを介してこれを行う方法はありますか?


コンテキスト

これをプロジェクトファイルにマクロとして追加して、グループ名のみが太字になり、レイヤー名が太字にならないように(美的目的で)します。したがって、プロジェクトがロードされたときにQSettingsが適用されると理想的です(プロジェクトが閉じられたときに初期設定が再適用されます)。


sync()を呼び出して変更をコミットするときに、status()を呼び出しますか?
ホワイザー

@whyzar-ありがとう
ジョセフ

2
これは非常に奇妙で、おそらくバグかもしれませんQSettings().setValue("/qgis/legendLayersBold", False)。同じ問題がこの行にあると思います。github.com/ qgis / QGIS / blob / release-2_18 / src / app /…
フラン・ラーガ

1
可能な方法はありますQgisApp::instance()->legend()->updateLegendItemStyles();が、おそらく将来のバージョンでは?
フランラーガ

@FranciscoRaga-リンクのおかげで、バグのように見えます。バグレポートを投稿することを考えていましたが、QGIS 3.0が間もなくリリースされるので、この問題が新しいバージョンにまだ存在するかどうかを待ちます=)
ジョセフ

回答:


2

ここを見て、デフォルト状態のキーを書かない限り、それは不可能だと思い\HKEY_CURRENT_USER\Software\QGIS\qgis\UI\state ます

実際、ソフトウェアを再起動すると、自動的にこれが行われます。

この解決策を確認してください:

#!/usr/bin/python
from PyQt4.QtCore import QSettings
QSettings( "QGIS", "QGIS2" ).remove( "/UI/state" )
QSettings( "QGIS", "QGIS2" ).remove( "/ComposerUI/state" )


#(for 1.8 it's QGIS instead of QGIS2 IIRC).

動作しない場合は、そのレジストリ値を書き換えるスクリプトを作成する必要があります。

そのためには、使用する必要があります winregをしてレジストリ値を操作ます。

次の方法でレジストリキーを表示できます Windowsを使用している場合は regedit.exeを使用し。

これがあなたのお役に立てば幸いです...


あなたの答えをありがとう、QGISが起動時にそれを読むためにマクロによってキーが書き込まれたとき、私はまだQGISを再起動しなければならないと思う。まだ方法を見つけようとしています:)
ジョセフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.