播放视频时在 qwidget 上绘图



我有一个从QWidget继承的类继承的类A。我的类包含一个媒体播放器和一个QVideoWidget。我希望我的对象 A 在每次播放列表中的新视频开始播放时绘制一个小矩形几毫秒,而不是视频小部件的小部件部分。 所以,我已经连接了我的插槽

connect(player, &QMediaPlayer::currentMediaChanged,this,&videoDisplay::drawRect);

但我无法正确使用drawRect函数。尝试使用QPainter,但它给了我错误

QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1

有什么建议吗?

谢谢

Qt中的绘画通常只能作为update请求的结果进行。

与其尝试直接绘制,不如使用标志或类似内容来表示新项目已从播放列表中启动......

bool m_new_video;

然后只需使用 lambda 作为插槽并让它设置标志并请求update......

connect(player, &QMediaPlayer::currentMediaChanged,
[this]()
{
m_new_video = true;
update();
});

然后,您的videoDisplay::paintEvent实现可以根据m_new_video的值绘制它必须绘制的任何内容。

相关内容

  • 没有找到相关文章

最新更新