我正在Qt中构建一个实时系统。每隔20毫秒,我需要在QFrame
中绘制5个点,以使信号的绘制看起来像实时。当我仅在QFrame中绘制信号时,对paintEvent()
的调用以所需频率20 ms完成。但是,当我专注于另一个QWidget或当我显示另一个窗口时(换句话说,当我执行另一个不太简单的绘画动作时)对paintEvent()
的调用开始减慢并且信号的样本是积累。
对函数paintEvent()
的调用是每隔20 ms对update()
的函数QFrame
的调用。在Qt中,你不能将涂漆的gui分成线。因此,对paintEvent()
的调用在与调用gui中绘制的其他操作的函数的调用相同的线程中运行。这导致当聚焦另一个QWidget
时,当与QWidget
中的框绘制相关联的处理被延迟时,绘制信号的事件被延迟。
问题在于是否有任何方法可以使事件绘制信号优先级,因此paintEvent()
以相同的频率被调用,无论gui中的内容是什么。我使用重绘而不是更新,因为在Qt的帮助下它表示重绘直接调用paintEvent()
,但结果是灾难性的。
任何其他想法都会有很大的帮助。