gpt4 book ai didi

Qt信号和继承问题

转载 作者:行者123 更新时间:2023-12-04 00:59:36 25 4
gpt4 key购买 nike

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

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

我正在尝试继承其他人精心制作的 QTWidgets 以更改一些默认行为:

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

Q_OBJECT;
//ETC...
上市:
//ETC...

//捕捉 Plot3D 的信号“rotationChanged”并用它做一些魔术:
无效初始化图(){
QObject::connect(this, SIGNAL(rotationChanged( double , double , double )),
这,SLOT(myRotationChanged(双,双,双)));
}
};

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

Object::connect: No such signal matLinePlot::rotationChanged(double, double, double)



在 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
...

反而。

关于Qt信号和继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com