瓦斯科0.0 2024-09-28 15:06 采纳率: 100%
浏览 13
已结题

如何通过QVideoWidget组件去播放ffmpeg解码后的图像帧数据


protected:
    void mousePressEvent(QMouseEvent* event) override
    {
        if (event->button() == Qt::LeftButton) {
            emit videoClicked();  // 当鼠标点击时发射信号
            qDebug()<<"signal success\n";
        }
        // 可以继续处理其他事件
        QVideoWidget::mousePressEvent(event);
    }
 
    void paintEvent(QPaintEvent *event) override {
        QVideoWidget::paintEvent(event);
        if (!m_image.isNull()) {
            QPainter painter(this);
            QImage scaledFrame = m_image.scaled(size(), Qt::KeepAspectRatio,             
                                                Qt::SmoothTransformation);
            painter.drawImage(rect(), scaledFrame);
        }
    }
private:
    QImage m_image;
};

我按照网上的方法,结果并没有画面显示。不知道啥原因,但是在使用QLabel去播放是没问题的,就是QLabel满足不了播放需求。请各位帮我解惑。

  • 写回答

2条回答 默认 最新

  • mideum 2024-09-29 14:26
    关注

    QVideoWidget不是这么用的,你如果用QImage还就是适合用QLabel,如果是因为缩放问题的话,最好方法是自己写个QWidget的子类重写paintEvent

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 9月28日