您的位置:首页 > Web前端

Qt signals and slots in different classes

2012-09-02 15:42 363 查看
Remember that connections are not between classes, but between instances.
If you emit a signal and expect connected slots to be called, it must be emitted on an instance on which the connection was made. That's your problem.

Assuming Y is a Singleton:

If you do
connect(
Y::getInstance(), ... )


and
Y::getInstance()
does
new
Y()
at some point, then the constructor of Y is called before the connection is set up. Like that, the signal will be emitted but the slot
will not listen to it yet.

Apart from that, it would be best to do one of the following things, though you could not emit the signal in the constructor of Y with these approaches:

Use a third class Z that knows both X and Y, and do the connection there

Dependency Injection. That means X gets an instance of Y in its constructor:

Example for a Dependency Injection Constructor:
X::X( Y* const otherClass )
{
connect( otherClass, SIGNAL( ... ), this, SLOT( ... )
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: