【问题标题】:I cant paint QVideoWidget with QPainter我不能用 QPainter 绘制 QVideoWidget
【发布时间】: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背景并尝试...

标签: qt phonon qpainter


【解决方案1】:

paintEvent() 函数中将QPainter 设为本地实例更为常见。

QPainter painter(this);

这会导致自动调用begin()end() 方法。这些是QPainter 正常工作所必需的。您可以尝试在 paintEvent() 中手动调用它们,看看是否会有所不同。

您可以尝试在视频上叠加文本的另一件事是在代码中创建QLabel 并将您的视频小部件设为其父级。这不需要子类化视频小部件或覆盖绘制事件。

【讨论】:

  • ...您对 QLabel 的建议让您可以覆盖它的paintEvent,这样您就可以独立于视频小部件制作自己的绘图。
  • 我尝试使用 QPainter 本地实例,但也没有用。我开始认为 VideoWidget 不使用 PaintEvent 来渲染视频...我会尝试使用 QLabel,如果它有效,我会再次在此处发布并标记您的回答,谢谢
  • 它有效,但是当 VideoWidget 更改帧本身时,透明背景的 QLabel 不会重新绘制,我现在很确定 VideoWidget 不使用paintEvent 来呈现视频......任何想法播放视频时如何使字幕标签自行重新绘制?使用计时器不是一个好主意,不是吗?谢谢
  • 您可以尝试另一种对我有用的方法来回答类似问题:stackoverflow.com/a/3692993/31044
猜你喜欢
  • 2018-09-06
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多