我想将Qt应用程序图像实时传输到另一台设备。 所以我需要使用其所有内容呈现MainScreen小部件,并将其作为位图传递给某个通信通道。
我希望尽可能减少对呈现的调用次数,因为它的CPU价格昂贵,但我也希望能够在UI中选择所有更改。
所以我尝试将 QWidget-> render 命令放在 paintEvent 中,但是它导致了递归重绘错误。
在没有递归重绘错误的情况下抓取应用程序框架的最佳方法是什么?
答案 0 :(得分:0)
这可能不是最佳解决方案,但如果已经调用render()
调用,则可以通过跳过void paintEvent() {
...
if(! m_rendering) { // m_rendering must be class member variable
m_rendering = true;
render();
m_rendering = false;
return;
}
...
}
调用来中断递归。
paintEvent()
但请注意,只有在调用MainScreen
的{{1}}时才会进行渲染。因此,您很可能会错过子窗口小部件的重新绘制。您可以使用QTimer
受控update()
来电解决此问题..具体取决于您需要的帧速率。