Mój projekt GUI w Qt
ma wiele klas „stron konfiguracji”, z których wszystkie dziedziczą bezpośrednio QWidget
.
Niedawno zdałem sobie sprawę, że wszystkie te klasy mają dwa wspólne miejsca ( loadSettings()
i saveSettings()
).
W związku z tym mam dwa pytania:
- Czy ma sens pisanie pośredniej, bazowej klasy abstrakcyjnej (nazwijmy ją
BaseConfigurationPage
) z tymi dwoma gniazdami jako czystymi metodami wirtualnymi? (Każda możliwa strona konfiguracji będzie zawsze miała te dwie metody, więc powiedziałbym „tak”) - Zanim dokonam poważnej zmiany w moim kodzie (jeśli muszę): czy Qt obsługuje wirtualne czyste sloty? Czy jest coś, o czym powinienem wiedzieć?
Oto przykład kodu opisujący wszystko:
class BaseConfigurationPage : public QWidget
{
// Some constructor and other methods, irrelevant here.
public slots:
virtual void loadSettings() = 0;
virtual void saveSettings() = 0;
};
class GeneralConfigurationPage : public BaseConfigurationPage
{
// Some constructor and other methods, irrelevant here.
public slots:
void loadSettings();
void saveSettings();
};
źródło
obj-ptr, member-func-ptr, obj-ptr, member-func-ptr
wersjiconnect
, żaden z twoich slotów nie musi być deklarowany jako taki.Tylko gniazda w BaseConfigurationPage
źródło