我有一个派生自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的相同方法。
有没有办法将基本方法放入插槽而不重新声明每个方法?
答案 0 :(得分:5)
QMetaObject(允许您使用插槽的Qt部分)和多重继承不混合。您创建“通过”插槽的解决方案是解决它的一种方法。但是,如果您不需要进行多重继承,我就不会这样做。从外观上看,一个PageWidget从Widget和Model中派生出来似乎很奇怪。让它包含模型可能更有意义。