我对使用Qt编程比较陌生,并且有一个问题。精简版:

如何继承父类(super class)中定义的信号?

我试图将别人精心制作的QTWidgets子类化,以更改某些默认行为:

//Plot3D是一个QWidget,它定义了信号“rotationChanged”
matLinePlot类:公共(public)QObject,公共(public)Plot3D {

Q_OBJECT;
//等等...
上市:
//等等...

//捕获Plot3D的信号“rotationChanged”,并对其进行一些魔术处理:
无效的initPlot(){
QObject::connect(this,SIGNAL(rotationChanged(double,double,double)),
这是SLOT(myRotationChanged(double,double,double))));
}
};

问题出在QObject::connect行中。我想做的是将rotationChanged信号(来自qwt3D_plot.h)连接到本地函数/SLOT-“myRotationChanged”。但是,每当我这样做时,在运行时我都会得到:



在C:...\matrixVisualization.h中。当然,我知道rotationChanged不在matrixVisualization.h中-而是在qwt_plot3D.h中,但是我认为,因为我继承自Plot3D,所以一切都应该很好。但是,现在我考虑了一下,由于SIGNAL和SLOT是宏,因此我假设MOC不知道/不在乎继承。

这就引出了我的问题-由于MOC和SIGNALS/SLOTS似乎不了解继承等问题:如何在其他地方定义一个小部件的子类并访问该小部件的信号?

我有很多关于如何使用封装来完成诸如此类的事情的示例,但是恐怕我不理解如何通过继承来做到这一点。

抱歉,这是一个荒谬的问题-我觉得我缺少明显的东西。

最佳答案

我想问题是多重继承:

class matLinePlot : public QObject, public Plot3D
...

我假设Plot3DQObject的子类?在这种情况下,您应该
class matLinePlot : public Plot3D
...

反而。

10-06 10:52