Dzielenie QSettings między wieloma klasami

0

W głównej klasie aplikacji mam klasę QSettings która w pliku .ini zawiera wszystkie ustawienia, dodatkowo główna klasa zawiera wiele innych klas które potrzebują pewnych ustawień z tego pliku. Czy klasy te powinny dostawać już odpowiednio wyłuskane i tylko niezbędne dane ( np w postaci innej specjalnie przygotowanej dla nich klasy ) czy każdej klasie dać metodę która pobierała by referencje do QSettings i niech sobie sama wyszukuje z tego pliku co potrzebuje?

Problemem w tej drugiej opcji jest to że każda klasa musiała by znać dokładną strukturę / budowę pliku ustawień .ini i każda zmiana w tym pliku pociągała by za sobą konieczność zmiany metody we wszystkich klasach aby dobrze wyłuskiwały potrzebne dane.

0

A singleton z settingsami nie wchodzi w grę? Settingsy są potrzebne raczej w całej apce i chyba nie ma nic złego w tym żeby to w ten sposob zrobic.

0

W sumie nic by to nie zmieniło bo dalej każda klasa musiała by znać dokładną strukturę pliku .ini jak np nazwy grup, podgrup, kluczy itd.

W sumie możliwości jest kilka, pytanie która z nich jest najlepsza.
Mogę w głównej klasie po odczytaniu ustawień z pliku zbudować kolejną tymczasową klasę QSettings już bez skomplikowanej struktury i bez zbędnych danych a tylko to co potrzebne jako
key1=value1
key2=value2
// itd

i w takiej postaci przekazać do klasy która tego potrzebuje. Minus - dochodzi tworzenie kolejnego pliku / plików które trzeba będzie później usuwać.

0

Nie wiem czy Cię dobrze rozumiem, przeważnie to Ty mi pomagałeś ale Twój problem polega na tym że nie chcesz żeby każda klasa korzystająca z QSettings i pliku .ini od nowa go parsowała w celu wyłuskania jakiejś wartości?

Jeżeli tak, to rozszerz QSettings o swoją klasę (poprzez dziedziczenie), która dodatkowo zawiera metody wyłuskujące jakieś dane z .ini, taki swoisty parser, potem obuduj to jeszcze w singleton, i klasy, które korzystają z twojej klasy ustawień nie muszą znać struktury pliku .ini bo po prostu wołają

mojeSettingsy.getJakisParamZini();

Sorki jeżeli nie o to chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1