Qt:将基类方法引入派生类的槽中

时间:2011-10-10 18:04:18

标签: qt signals-slots qobject

我有一个派生自QWidget和模型类的类。根据我的阅读,我不能让模型类从QObject派生。

class PageWidget : public QWidget,
        public MyModelClass
{
...
};

模型类 MyModelClass 已经有了设置setWidth(bool)等属性的方法。似乎我不能直接将这些方法用作插槽。如果我宣布:

QObject :: connect(按钮,SIGNAl(dataChanged(bool)),这个,SLOT(setWidth(bool)));

Qt在运行时抱怨没有插槽setWidth(bool)。我必须手动将每个方法添加到PageWidget中,而PageWidget只调用MyModelClass的相同方法。

有没有办法将基本方法放入插槽而不重新声明每个方法?

1 个答案:

答案 0 :(得分:5)

QMetaObject(允许您使用插槽的Qt部分)和多重继承不混合。您创建“通过”插槽的解决方案是解决它的一种方法。但是,如果您不需要进行多重继承,我就不会这样做。从外观上看,一个PageWidget从Widget和Model中派生出来似乎很奇怪。让它包含模型可能更有意义。