ere*_*eOn 94 c++ inheritance qt signals-slots
我的GUI项目Qt有很多"配置页面"类,它们都直接从中继承QWidget.
最近,我意识到所有这些类共享2个公共插槽(loadSettings()和saveSettings()).
对此,我有两个问题:
BaseConfigurationPage用这两个插槽作为虚拟纯方法编写一个中间基本抽象类(让它命名)是否有意义?(每个可能的配置页面总是有这两种方法,所以我会说"是")这是一个描述所有内容的代码示例:
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();
};
Run Code Online (Sandbox Code Playgroud)
ian*_*c45 155
是的,就像常规的c ++纯虚方法一样.MOC生成的代码确实调用了纯虚拟插槽,但是没关系,因为基类无论如何都无法实例化......
同样,就像常规的c ++纯虚方法一样,在给出实现方法之前,不能实例化类.
一件事:在子类中,您实际上不需要将重写方法标记为插槽.首先,它们已经实现为基类中的插槽.其次,您只是为MOC和编译器创建了更多的工作,因为您要添加(微小)更多的代码.琐碎,但无论如何.
所以,去吧..
| 归档时间: |
|
| 查看次数: |
28111 次 |
| 最近记录: |