播放视频时在 qwidget 上绘图

Drawing on a qwidget while playing videos

我有一个 class A,它继承自 class,它继承自 QWidget。我的 class 包含一个媒体播放器和一个 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.

的值绘制任何它必须绘制的内容