我不能用 QPainter 绘制 QVideoWidget
Posted
技术标签:
【中文标题】我不能用 QPainter 绘制 QVideoWidget【英文标题】:I cant paint QVideoWidget with QPainter 【发布时间】:2012-06-05 03:38:26 【问题描述】:我正在尝试在播放视频时绘制字符串,例如字幕... 我有一个 Phonon::QVideoWidget,在它的构造函数中我做了:
painter = new QPainter(this);
我已经将paint事件覆盖到这个,仅用于测试:
void MyVideoWidget::paintEvent(QPaintEvent* event)
painter->drawLine(0, 0, 1, 1);
//painter-> anything shows
所以当我启动我的播放器时,我看不到 QPainter 所做的任何事情,只有正常的视频播放 有什么想法吗?
【问题讨论】:
为画家设置可见的钢笔颜色wrt背景并尝试... 【参考方案1】:在paintEvent()
函数中将QPainter
设为本地实例更为常见。
QPainter painter(this);
这会导致自动调用begin()
和end()
方法。这些是QPainter
正常工作所必需的。您可以尝试在 paintEvent()
中手动调用它们,看看是否会有所不同。
您可以尝试在视频上叠加文本的另一件事是在代码中创建QLabel
并将您的视频小部件设为其父级。这不需要子类化视频小部件或覆盖绘制事件。
【讨论】:
...您对 QLabel 的建议让您可以覆盖它的paintEvent,这样您就可以独立于视频小部件制作自己的绘图。 我尝试使用 QPainter 本地实例,但也没有用。我开始认为 VideoWidget 不使用 PaintEvent 来渲染视频...我会尝试使用 QLabel,如果它有效,我会再次在此处发布并标记您的回答,谢谢 它有效,但是当 VideoWidget 更改帧本身时,透明背景的 QLabel 不会重新绘制,我现在很确定 VideoWidget 不使用paintEvent 来呈现视频......任何想法播放视频时如何使字幕标签自行重新绘制?使用计时器不是一个好主意,不是吗?谢谢 您可以尝试另一种对我有用的方法来回答类似问题:***.com/a/3692993/31044以上是关于我不能用 QPainter 绘制 QVideoWidget的主要内容,如果未能解决你的问题,请参考以下文章
Qt音视频开发23-视频绘制QPainter方式(占用CPU)
Qt音视频开发23-视频绘制QPainter方式(占用CPU)