W programie chcę korzystać z różnych baz danych, zarówno plikowych jak i z baz zdalnych. Logicznym wydaje się więc wydzielenie klasy, która tym się zajmie. Niby prosta sprawa, ale... Tworzę sobie w QT Creator nowy okno dialogowe. Można wywołać je z main window z jakiejś funkcji, jeśli utworzę obiekt poza funkcją wywala błąd, bo widget musi być wywołany po konstruktorze mainwindow, jeśli umieszczę w funkcji wtedy nie da się przez extern przekazać obiektu do innych klas/widgetów. Zabawa z przekazywaniem do obiektów wskaźnika na widget zarządzający bazą to takie na około za bardzo i więcej problemów. W programie, który korzysta cały czas z połączenia z bazą danych nie ma sensu tworzyć i niszczyć obiektu odpowiedzialnego za połączenie. Dlaczego widget, a nie klasa? Bo gdzieś trzeba wybrać plik do otwarcia albo skonfigurować dane dostępowe do bazy zdalnej. No i przydadzą się operacje stricte administracyjne na bazie, przebudowa indeksów, przebudowa numeracji a autoincrement. Jedyne co mi przychodzi do głowy to rozbić to na klasę, która będzie odpowiadać za połączenie i widget w którym będzie okienko do wybierania połączenia, do operacji administracyjnych. Czy jest jakaś lepsza, logiczna metoda zrobienia tego?
I dodatkowa sprawa, bardziej z QT Cratorem niż z cpp. Nie widzę nigdzie z edytorze ui opcji ustawiania widgetów widzialny/niewidzialny. Mam po lewej toolbox, w zależności od taba inna zawartość okna głównego. Tworzenie tego ręcznie to sporo zabawy, więc zrobiłem kilka frame, z programu łatwo można ustawiać, które frame ma byś show, a które hide, tylko edytować to ciężko, bo jak mam 7 frame to każde zajmuje tylko wąski pasek. Więc zabawa ze zmienianiem szerokości przy edycji poszczególnych tabów, jeden powiększyć, drugi zmniejszyć. Wygodniejsze byłoby schowanie i pokazanie. Poszczególne frame mocno się różnią między sobą. Jedne mają kilka label i kilka lineedit, a inne mogą mieć ponad 50 elementów. Jak można poradzić sobie z takim problemem?