Forum QGIS
Formularze dla edycji danych - Wersja do druku

+- Forum QGIS (http://forum.quantum-gis.pl)
+-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html)
+--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html)
+--- Wątek: Formularze dla edycji danych (/thread-505.html)

1 2 3 4


RE: Formularze dla edycji danych - Rayo - 08-02-2012

W pliku 'pory_roku_funkcje.txt' brakuje znaku '#' na początku.
Nie kopiuj zawartości pliku z treści strony, tylko pobierz cały plik 'pory_roku_funkcje.txt' (jest w jednym z poprzednich postów). Wtedy będziesz miał pewność, że nic nie uciekło podczas kopiowania.

Generalnie wygląda na to, że jesteś krok dalej, bo nie ma już komunikatu o braku modułu 'pory_roku_funkcje', tylko o błędzie w jego treści. Jeśli treść będzie poprawna to powinno ruszyć.


RE: Formularze dla edycji danych - brylu - 08-02-2012

No dobra, mój błąd Smile Teraz wszystko działaSmile Zabieram sie zatem do pracy nad przerobieniem tego na własny projekt.
Bardzo Wam dziękuję za pomoc ale obawiam sie, że jeszcze wątek będę odgrzewał bo nie czuję się w tym pewnieSmile


RE: Formularze dla edycji danych - brylu - 08-02-2012

Dobra. Pierwszy problem.
W przykładzie, który podałeś są radioButtony umieszczone na GroupBox. Podobne rozwiazanie chciałem zastosować ja. W zalezności od tego które radio wybierzesz pozostałe elementy formularza maja być dostępne w określonym zakresie. Problem jest taki, że potrzebuję zapisac równiez w tabeli wynik wyboru na GroupBox. W przypadku pojedyńczych pól lub innych elementów formularza wystarczy je nazwać tak jak kolumny w tabeli aby wartość została zapisana w odpowiednim polu. Natomiast tutaj to nie działa w ten sposób. Nazwanie groupBox tak jak kolumny w tabeli nie powoduje zapisu wyboru odpowiedniego radioButtona. Innymi słowy: jak byś rozwiązał problem zapisu w tabeli atrybutów z Twojego przykładu pory roku? Zakładając, że tabela atrybutów będzie miała kolumny pora_roku i miesiac. Wybierasz w formularzu wiosnę i kwiecień. W tabeli atrybutów zapis miesiąca jest prosty bo ComboBox będzie miał nazwę miesiac. Jak można zapisać porę roku?


RE: Formularze dla edycji danych - Rayo - 08-02-2012

Możesz np. w oknie dialogowym dorobić pole typu LineEdit o nazwie 'pora_roku' i w funkcjach 'menuWiosna' (lato itd) wstawiać do niego odpowiednią wartość poprzez 'pora_roku.setText('Wiosna')'.
Pole to możesz ukryć jeśli będzie przeszkadzało.


RE: Formularze dla edycji danych - brylu - 09-02-2012

Muszę przyznać, że trochę się to ruszyło do przodu. Nawet trochę bardzoSmile
Napotkałem jednak jeszcze jeden problem. Łatwy w sumie do ominięcia ale może da się jednak prościej. W dwóch miejscach na formularzu muszę wstawić datę. Mam do tego dwa obiekty. Calendar albo Date Edit. Pierwsze rozwiązanie jest ładne ale zajmuje dużo miejsca na formularzu i nie dodaje poprawnie daty do tabeli atrybutów (nie wiem czemu ale zapisuje mi tylko rok). Drugie jest pod tym kątem lepsze (tym bardziej, że można włączyć calendarPopup), niestety nie wiem jak ustawić aby przy wywołaniu formularza pokazywała sie tam aktualna data. Jedyne co przyszło mi do głowy ( i to działa - sprawdziłem) to dodanie do formularza obu obiektów i połączenie ich w taki sposób, że wybór daty na Calendar (gdzie zawsze pokazuje się aktualna data) jest przesyłany do Date Edita (który jest ukryty) i dopiero z niego zapisywana jest informacja do tabeli atrybutów. Niestety odbywa sie to kosztem miejsca na formularzu. Zastanawia mnie czy da się zmusić w jakiś inny sposób Date Edit do pokazywania aktualnej daty.

I jeszcze jedna rzecz mnie zastanawia. Czy do Check Boxa można przypisać wartości tak/nie zamiast 0/1?


RE: Formularze dla edycji danych - Rayo - 09-02-2012

Co do daty to można zrobić w ten sposób:

Kod:
    data = okno.findChild(QDateEdit,"data")
    data.setDate( QDate().currentDate() )

QT ma bardzo dobrą dokumentację pod adresem http://doc.qt.nokia.com/qt5/classes.html
Radio Button przesyła Ci dane do tabeli w QGIS? Mi jakoś nie bardzo.

Dla Check Boxa można przypisać dane 'wybrane/nie wybrane' w QGISie. Na formularzu QT stawiasz Check Boxa i nazywasz tak jak kolumnę w tabeli atrybutów. Następnie wchodzisz na właściwości warstwy i zakładce 'pola' ustawiasz edytor dla tej kolumny na 'pole wyboru' i wpisujesz pasujący Ci tekst.


RE: Formularze dla edycji danych - brylu - 10-02-2012

Jeszcze raz bardzo dziękuję za pomoc. Jeśli chodzi o RadioButton to nie przesyłałem z niego informacji bezpośrednio do tabeli. Wykorzystałem patent z Twojego przykładu oraz pośrednie pole LineEdit. To że RadioButton nie zapisuje bezpośrednio do tabeli może być związane z tym że zwraca on tylko jedną wartość. Kiedy jest odznaczony to jest NULL, a dopiero zaznaczenie może być jakąś informacją. Dodatkowo pojedynczego RadioButtona nie mozna odznaczyć. Check Box zwraca zawsze 0 lub 1... Nie wiem. To tak na logikę trochę...