在Qt

时间:2016-04-14 11:06:13

标签: c++ qt qt5

我想将Qt应用程序图像实时传输到另一台设备。 所以我需要使用其所有内容呈现MainScreen小部件,并将其作为位图传递给某个通信通道。

我希望尽可能减少对呈现的调用次数,因为它的CPU价格昂贵,但我也希望能够在UI中选择所有更改。

所以我尝试将 QWidget-> render 命令放在 paintEvent 中,但是它导致了递归重绘错误。

在没有递归重绘错误的情况下抓取应用程序框架的最佳方法是什么?

1 个答案:

答案 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()来电解决此问题..具体取决于您需要的帧速率。