QSettings'deki değişiklikleri hemen nasıl uygulayabilirim?


15

PyQGIS ile, Katmanlar Paneli'ndeki (veya içindekiler tablosundaki) grupları kalın yapma gibi çeşitli ayarları değiştirebilirsiniz:

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

Seçeneklerden veya yazarak görülebilen ayarlar yazılmıştır:

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

Ancak uygulanmaz. Kullanmayı düşündüm

QSettings().sync()

yardımcı olabilir ama maalesef değil. Uygulamanın tek yolu GUI'ye ( Settings > Options) gitmek ve ardından OKQGIS'i tıklamak veya yeniden başlatmak olacaktır.

Bunu PyQGIS üzerinden yapmanın bir yolu var mı?


Bağlam :

Bunu sadece grup adlarının kalın ve katman adlarının olmamasını sağlamak için (estetik amaçlı) bir proje dosyasına makro olarak eklemek istiyorum. Bu nedenle, proje yüklendiğinde QSettings uygulamasının uygulanması ideal olacaktır (proje kapatıldığında başlangıç ​​ayarları yeniden uygulanacaktır).


Değişikliklerinizi gerçekleştirmek için sync () öğesini çağırdığınızda, status () öğesini çağırır mısınız?
whyzar

@whyzar - Teşekkürler ama bunu da test ettik ve hala bir değişiklik yok.
Joseph

2
Bu çok garip, belki bir hata çünkü aynı kullanarak oluşur QSettings().setValue("/qgis/legendLayersBold", False). Ben sorunun bu satırda olduğunu düşünüyorum github.com/qgis/QGIS/blob/release-2_18/src/app/…
Fran Raga

1
olası yöntem, QgisApp::instance()->legend()->updateLegendItemStyles();ancak gelecekteki bir sürümünde muhtemelen?
Fran Raga

@FranciscoRaga - Bağlantı için teşekkürler, bir hata gibi görünüyor. Bir hata raporu göndermeyi düşünüyordum ama QGIS 3.0 yakında çıkacak, bu sorunun hala yeni sürümde olup olmadığını göreceğim =)
Joseph

Yanıtlar:


2

Buraya bir göz atmak için varsayılan durumu olan bir anahtar yazmazsanız mümkün olmadığını düşünüyorum .\HKEY_CURRENT_USER\Software\QGIS\qgis\UI\state

aslında, yazılımı yeniden başlattığımızda bunu otomatik olarak bizim için yapar.

bu çözümü kontrol et:

#!/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).

çalışmazsa, bu kayıt defteri değerini yeniden yazmak için bir komut dosyası yazmanız gerekir.

bunu yapmak için kayıt defteri değerlerini değiştirmek için winreg kullanmanız gerekir .

Windows kullanıyorsanız , kayıt defteri anahtarlarını regedit.exe aracılığıyla görüntüleyebilirsiniz .

Umarım bu sana yardımcı olur...


Cevabınız için teşekkür ederim, sanırım anahtar QGIS'in başlatma sırasında okuması için makro tarafından yazıldığında QGIS'i yeniden başlatmam gerekecek. Hala bir yol bulmaya çalışıyor :)
Joseph
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.