Qt信号和插槽的效率

时间:2011-02-18 07:49:05

标签: c++ performance qt4 game-engine signals-slots

我正在浏览QMainWindow内部的方法,并注意到某些部分(例如resizeEvent和winEvent)没有实现为信号,而是你必须继承这个类才能覆盖它们。

我的问题是,信号和插槽的效率如何,并且可以将这些类型的函数实现为其他类可以订阅的信号。例如,在高性能游戏引擎内部。

3 个答案:

答案 0 :(得分:4)

据我所知,Trolltech表示信号/时段呼叫比virtual呼叫慢约10倍。您应该能够轻松处理每秒数十个(如果不是数十万个)信号。

答案 1 :(得分:3)

设计信号和插槽,以便不同的对象可以进行通信,这两个对象都在您的控制之下。

您提到的事件一次只涉及一个对象,它直接由事件循环通知。这里不需要信号或插槽。

请注意,如果您愿意,可以在事件成员函数中发出信号。这通常是对事件做出反应的正确方法。这样,其他对象可以订阅某些内容。

答案 2 :(得分:0)

从QMainWindow派生,重新实现resize()和emit()信号,如果你想在其他地方对这些信号作出反应。