首页 文章

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

提问于
浏览
1

我有一个派生自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 回答

  • 5

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

相关问题