我对使用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
...
我假设
Plot3D
是QObject
的子类?在这种情况下,您应该class matLinePlot : public Plot3D
...
反而。