我的 GUI 项目在Qt
有很多“配置页面”类,它们都直接继承自QWidget
.
最近,我意识到所有这些类共享 2 个公共槽(loadSettings()
and 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();
};
是的,就像常规的 C++ 纯虚方法一样。 MOC 生成的代码确实调用了纯虚拟插槽,但这没关系,因为基类无论如何都无法实例化......
同样,就像常规的 c++ 纯虚方法一样,在为方法提供实现之前,无法实例化类。
一件事:在子类中,您实际上不需要将重写方法标记为插槽。首先,它们已经作为基类中的槽实现。其次,您只是为 MOC 和编译器创建了更多工作,因为您添加了(一点点)更多的代码。微不足道,但无论如何。
所以,加油吧..
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)