我对使用Qt编程相对较新,有一个问题:
如何继承超类中定义的信号?
我试图从别人漂亮制作的QTWidgets进行子类化,以更改一些默认行为:
//Plot3D是一个QWidget,定义了一个名为“rotationChanged”的信号 class matLinePlot : public QObject, public Plot3D {
Q_OBJECT; //etc... public: //etc...
//捕获Plot3D的信号“rotationChanged”,并对其进行一些操作: void initPlot(){ QObject::connect(this, SIGNAL(rotationChanged( double , double , double )), this, SLOT(myRotationChanged(double, double, double))); } };
问题出现在QObject :: connect行中。 我想要做的是将rotationChanged信号(来自qwt3D_plot.h)连接到本地函数/插槽 - “myRotationChanged”。 但是每当我这样做时,在运行时我会得到:
Object :: connect:没有这样的信号matLinePlot :: rotationChanged(double,double,double)
在C:... / matrixVisualization.h中。 当然,我知道rotationChanged不在matrixVisualization.h中-它在qwt_plot3D.h中,但是我认为由于我从Plot3D继承,所以一切都应该没问题。 但是,现在我想一想,由于SIGNAL和SLOT是宏,所以我认为MOC不知道/不关心继承。
这让我想到一个问题——由于MOC和SIGNALS/SLOTS似乎不知道继承等内容:如何从其他地方定义的小部件进行子类化并获得对该小部件信号的访问权限?
我有很多使用封装实现此类操作的示例,但恐怕我不知道如何使用继承来实现。
如果这是一个愚蠢的问题,请原谅我,我觉得我可能忽略了一些显而易见的东西。
如何继承超类中定义的信号?
我试图从别人漂亮制作的QTWidgets进行子类化,以更改一些默认行为:
//Plot3D是一个QWidget,定义了一个名为“rotationChanged”的信号 class matLinePlot : public QObject, public Plot3D {
Q_OBJECT; //etc... public: //etc...
//捕获Plot3D的信号“rotationChanged”,并对其进行一些操作: void initPlot(){ QObject::connect(this, SIGNAL(rotationChanged( double , double , double )), this, SLOT(myRotationChanged(double, double, double))); } };
问题出现在QObject :: connect行中。 我想要做的是将rotationChanged信号(来自qwt3D_plot.h)连接到本地函数/插槽 - “myRotationChanged”。 但是每当我这样做时,在运行时我会得到:
Object :: connect:没有这样的信号matLinePlot :: rotationChanged(double,double,double)
在C:... / matrixVisualization.h中。 当然,我知道rotationChanged不在matrixVisualization.h中-它在qwt_plot3D.h中,但是我认为由于我从Plot3D继承,所以一切都应该没问题。 但是,现在我想一想,由于SIGNAL和SLOT是宏,所以我认为MOC不知道/不关心继承。
这让我想到一个问题——由于MOC和SIGNALS/SLOTS似乎不知道继承等内容:如何从其他地方定义的小部件进行子类化并获得对该小部件信号的访问权限?
我有很多使用封装实现此类操作的示例,但恐怕我不知道如何使用继承来实现。
如果这是一个愚蠢的问题,请原谅我,我觉得我可能忽略了一些显而易见的东西。