Meu projeto de GUI Qt
tem muitas classes de "páginas de configuração" das quais todas herdam diretamente QWidget
.
Recentemente, percebi que todas essas classes compartilham 2 slots comuns ( loadSettings()
e saveSettings()
).
A respeito disso, tenho duas perguntas:
- Faz sentido escrever uma classe abstrata de base intermediária (vamos nomeá-la
BaseConfigurationPage
) com esses dois slots como métodos puros virtuais? (Cada página de configuração possível sempre terá esses dois métodos, então eu diria "sim") - Antes de fazer uma grande mudança no meu código (se for necessário): o Qt suporta slots virtuais puros? Há algo que eu deva estar ciente?
Aqui está um exemplo de código que descreve tudo:
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();
};
fonte
obj-ptr, member-func-ptr, obj-ptr, member-func-ptr
versão doconnect
, nenhum de seus slots precisa ser declarado como tal.Apenas slots na BaseConfigurationPage
fonte