我有一个自定义小部件,它继承了 QWidget。它有自己的 paintEvent,我无法更改它。所以我想在我的对话框对象中使用这样一个小部件,但我需要在它绘制自己的图形后在其上绘制一些图形(该小部件在其上绘制视频帧,我需要在其上绘制一些线条)。我可以在那个小部件的 paintEvent 之后每次绘制吗?我使用了 installEventFilter 并捕获了 Qt::Paint 类型的事件,但我无法看到我淹没的任何东西。还有其他办法吗?
最佳答案
您可以从自定义小部件类派生,重新实现
<paintEvent
,并先调用继承的paintEvent
,然后再进行绘图。您可以在小部件上安装事件过滤器并执行相同的操作:首先调用小部件的
paintEvent
,然后进行绘图。隐藏另一个小部件。创建您自己的小部件,并在您的小部件的
paintEvent
中调用其他小部件的render
方法,然后进行绘图。由于另一个小部件可能正在呈现随时间周期性变化的视频帧,您可能需要使用计时器来update()
您的小部件。
在这两种情况下,您都不会修改第 3 方自定义小部件。
为了调用其他小部件的 protected paintEvent
,您需要使用 QWidget
,即使只是一个虚拟的、不可见的。
关于c++ - 绘制后在自定义小部件上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015068/