我目前正在开展一个项目,其中有两个主要对象。 对象A具有良好构建的信号槽接口。 对象B有一个对象A的实例。 我希望向对象A发射一个信号,尽可能地改变对象A-这意味着我想使用对象A的发射方法向自己发送信号。
我认为一个好方法是,对象A将有一个方法,它将指向它的emit方法。对象B将使用该方法并简单地向对象A发射信号。 唯一的问题是我不知道如何(如果可能的话),实际提取一个对象的emit方法,以及指向它的指针。
非常感谢!
答案 0 :(得分:0)
在Qt"发出"不是一种方法,它是合成糖,归结为
#define emit
所以你不能这样做。如果要从另一个对象发出信号,则将A上的插槽连接到B或B连接到A.
答案 1 :(得分:0)
Qt信号实现为protected
成员函数。发出它们只是调用成员函数(注意预处理器有效地删除了伪关键字emit
,因为它扩展为空)这意味着你不能从类外发出信号。
但是,您可以将一个信号连接到另一个信号。发出第一个也将导致第二个发射。因此,您只需向B
添加适当的信号:
class B : public QObject
{
Q_OBJECT
B();
A a;
signals:
void emitASignal();
};
B::B()
{
connect(this, SIGNAL(emitASignal()), &a, SIGNAL(theSignalYouWantToEmit()));
}
然后,执行emit emitASignal();
会导致从theSignalYouWantToEmit()
发出a
。