Outdated version of the documentation. Find the latest one here.

Citirea și stocarea setărilor

De multe ori, pentru un plugin, este utilă salvarea unor variabile, astfel încât utilizatorul să nu trebuiască să le reintroducă sau să le reselecteze, la fiecare rulare a plugin-ului.

These variables can be saved a retrieved with help of Qt and QGIS API. For each variable, you should pick a key that will be used to access the variable — for user’s favourite color you could use key “favourite_color” or any other meaningful string. It is recommended to give some structure to naming of keys.

Putem face diferența între mai multe tipuri de setări:

  • global settings — they are bound to the user at particular machine. QGIS itself stores a lot of global settings, for example, main window size or default snapping tolerance. This functionality is provided directly by Qt framework by the means of QSettings class. By default, this class stores settings in system’s “native” way of storing settings, that is — registry (on Windows), .plist file (on Mac OS X) or .ini file (on Unix). The QSettings documentation is comprehensive, so we will provide just a simple example

    def store():
      s = QSettings()
      s.setValue("myplugin/mytext", "hello world")
      s.setValue("myplugin/myint",  10)
      s.setValue("myplugin/myreal", 3.14)
    
    def read():
      s = QSettings()
      mytext = s.value("myplugin/mytext", "default text")
      myint  = s.value("myplugin/myint", 123)
      myreal = s.value("myplugin/myreal", 2.71)
    

    Al doilea parametru al metodei value() este opțional și specifică valoarea implicită, dacă nu există nici o valoare anterioară stabilită pentru setare.

  • setările proiectului — variază între diferite proiecte și, prin urmare, ele sunt conectate cu un fișier de proiect. Culoarea de fundal a suportului hărții sau sistemul de coordonate de referință (CRS), de exemplu — fundal alb și WGS84 ar putea fi potrivite pentru un anumit proiect, în timp ce fondul galben și proiecția UTM ar putea fi mai bune pentru altul. În continuare este dat un exemplu de utilizare

    proj = QgsProject.instance()
    
    # store values
    proj.writeEntry("myplugin", "mytext", "hello world")
    proj.writeEntry("myplugin", "myint", 10)
    proj.writeEntry("myplugin", "mydouble", 0.01)
    proj.writeEntry("myplugin", "mybool", True)
    
    # read values
    mytext = proj.readEntry("myplugin", "mytext", "default text")[0]
    myint = proj.readNumEntry("myplugin", "myint", 123)[0]
    

    După cum puteți vedea, metoda writeEntry() este folosită pentru toate tipurile de date, dar există mai multe metode pentru a seta înapoi setarea, iar cea corespunzătoare trebuie să fie selectată pentru fiecare tip de date.

  • setările stratului hărții — aceste setări sunt legate de o anumită instanță a unui strat de hartă cu un proiect. Acestea nu sunt conectate cu sursa de date a stratului, așa că dacă veți crea două instanțe ale unui strat de hartă dintr-un fișier shape, ele nu vor partaja setările. Setările sunt stocate în fișierul proiectului, astfel încât, în ​​cazul în care utilizatorul deschide iarăși proiectul, setările legate de strat vor fi din nou acolo. Această funcționalitate a fost adăugată în QGIS v1.4. API-ul este similar cu QSettings — luând și returnând instanțe QVariant

    # save a value
    layer.setCustomProperty("mytext", "hello world")
    
    # read the value again
    mytext = layer.customProperty("mytext", "default text")