我正在浏览QMainWindow内部的方法,并注意到某些部分(例如resizeEvent和winEvent)没有实现为信号,而是你必须继承这个类才能覆盖它们。
我的问题是,信号和插槽的效率如何,并且可以将这些类型的函数实现为其他类可以订阅的信号。例如,在高性能游戏引擎内部。
答案 0 :(得分:4)
据我所知,Trolltech表示信号/时段呼叫比virtual
呼叫慢约10倍。您应该能够轻松处理每秒数十个(如果不是数十万个)信号。
答案 1 :(得分:3)
设计信号和插槽,以便不同的对象可以进行通信,这两个对象都在您的控制之下。
您提到的事件一次只涉及一个对象,它直接由事件循环通知。这里不需要信号或插槽。
请注意,如果您愿意,可以在事件成员函数中发出信号。这通常是对事件做出反应的正确方法。这样,其他对象可以订阅某些内容。
答案 2 :(得分:0)
从QMainWindow派生,重新实现resize()和emit()信号,如果你想在其他地方对这些信号作出反应。