В моем проекте с графическим интерфейсом Qt
есть много классов "страниц конфигурации", которые все наследуются непосредственно отQWidget
.
Недавно я понял, что все эти классы имеют 2 общих слота ( loadSettings()
и saveSettings()
).
По этому поводу у меня два вопроса:
- Имеет ли смысл писать промежуточный базовый абстрактный класс (назовем его
BaseConfigurationPage
) с этими двумя слотами как виртуальные чистые методы? (На каждой возможной странице конфигурации всегда будут эти два метода, поэтому я бы сказал «да») - Прежде чем я внесу серьезные изменения в свой код (если мне придется): поддерживает ли Qt виртуальные чистые слоты? Что мне следует знать?
Вот пример кода, описывающий все:
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();
};
источник
obj-ptr, member-func-ptr, obj-ptr, member-func-ptr
версиюconnect
, ни один из ваших слотов не должен быть объявлен как таковой.Только слоты в BaseConfigurationPage
источник