1

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

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

模型类MyModelClass已经具有设置属性的方法,例如 setWidth(bool)。看来我不能直接将这些方法用作插槽。如果我声明:

QObject::connect(button, SIGNAl(dataChanged(bool)), this, SLOT(setWidth(bool)));

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

有没有办法在不重新声明每个方法的情况下将基本方法带入插槽?

4

1 回答 1

5

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

于 2011-10-10T18:18:56.620 回答