Qt 我不能用QPainter绘制QVideoWidget

Qt 我不能用QPainter绘制QVideoWidget,qt,phonon,qpainter,Qt,Phonon,Qpainter,我试着在玩视频游戏的时候画线,比如字幕。。。 我有一个Phonon::QVideoWidget,在它的构造函数中我有: painter = new QPainter(this); 我已将绘制事件重写为此,仅用于测试: void MyVideoWidget::paintEvent(QPaintEvent* event) { painter->drawLine(0, 0, 1, 1); //painter-> anything shows } 因此,当我启动播放器时,

我试着在玩视频游戏的时候画线,比如字幕。。。 我有一个Phonon::QVideoWidget,在它的构造函数中我有:

painter = new QPainter(this);
我已将绘制事件重写为此,仅用于测试:

void MyVideoWidget::paintEvent(QPaintEvent* event)
{
    painter->drawLine(0, 0, 1, 1);
    //painter-> anything shows
}
因此,当我启动播放器时,我看不到QPainter所做的任何事情,只有正常的视频播放
有什么想法吗?

更常见的做法是在
paintEvent()
函数中将
QPainter
设置为本地实例

QPainter painter(this);
这将导致自动调用
begin()
end()
方法。这些是
QPainter
正常工作所必需的。您可以尝试在
paintEvent()
中手动调用它们,看看这是否会产生影响


在视频上叠加文本的另一个方法是在代码中创建
QLabel
,并将视频小部件作为其父项。这不需要对视频小部件进行子分类或覆盖绘制事件。

更常见的做法是在
paintEvent()
函数中将
QPainter
作为本地实例

QPainter painter(this);
这将导致自动调用
begin()
end()
方法。这些是
QPainter
正常工作所必需的。您可以尝试在
paintEvent()
中手动调用它们,看看这是否会产生影响


在视频上叠加文本的另一个方法是在代码中创建
QLabel
,并将视频小部件作为其父项。这不需要对视频小部件进行子分类或覆盖绘制事件。

为painter设置可见的钢笔颜色wrt背景并尝试…为painter设置可见的钢笔颜色wrt背景并尝试…以及您对QLabel的建议让您覆盖其绘制事件,以便您可以绘制自己的图形,独立于视频小部件。我尝试使用QPaint本地实例,但也不起作用。我开始认为VideoWidget不使用PaintEvent来渲染视频…我将尝试使用QLabel,如果它有效,我将再次在这里发布,并标记您回答,谢谢,但使用tranparent后台,当VideoWidget更改帧本身时,QLabel不会重新绘制,我很确定现在VideoWidget没有使用paintEvent来渲染视频…关于如何在播放视频时重新绘制字幕标签有什么想法吗??使用计时器不是个好主意,是吗?感谢您在回答类似问题时可以尝试另一种对我有效的方法:…您关于QLabel的建议让您覆盖其paintEvent,以便您可以独立于视频小部件绘制自己的图形。我尝试使用QPainter local实例,但也不起作用。我开始认为VideoWidget不使用PaintEvent来渲染视频…我将尝试使用QLabel,如果它有效,我将再次在这里发布,并标记您回答,谢谢,但使用tranparent后台,当VideoWidget更改帧本身时,QLabel不会重新绘制,我很确定现在VideoWidget没有使用paintEvent来渲染视频…关于如何在播放视频时重新绘制字幕标签有什么想法吗??使用计时器不是个好主意,是吗?谢谢,在回答类似问题时,您可以尝试另一种对我有效的方法: