QGraphicsVideoItem Class

QGraphicsVideoItem 类提供了一个图形项目,用于显示由QMediaPlayerQCamera 制作的视频

Header: #include <QGraphicsVideoItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS MultimediaWidgets)
target_link_libraries(mytarget PRIVATE Qt6::MultimediaWidgets)
qmake: QT += multimediawidgets
继承: QGraphicsObject

属性

公共函数

QGraphicsVideoItem(QGraphicsItem *parent = nullptr)
virtual ~QGraphicsVideoItem() override
Qt::AspectRatioMode aspectRatioMode() const
QSizeF nativeSize() const
QPointF offset() const
void setAspectRatioMode(Qt::AspectRatioMode mode)
void setOffset(const QPointF &offset)
void setSize(const QSizeF &size)
QSizeF size() const
QVideoSink *videoSink() const

重新实现的公共函数

virtual QRectF boundingRect() const override
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
virtual int type() const override

信号

void nativeSizeChanged(const QSizeF &size)

详细说明

将 QGraphicsVideoItem 附加到QMediaPlayerQCamera 后,就可以显示该媒体对象的视频或图像输出。

player = new QMediaPlayer(this);

QGraphicsVideoItem *item = new QGraphicsVideoItem;
player->setVideoOutput(item);
graphicsView->scene()->addItem(item);
graphicsView->show();

player->setSource(QUrl("http://example.com/myclip4.ogv"));
player->play();

注意:一个媒体对象一次只能附加一个显示输出。

另请参阅 QMediaPlayerQVideoWidgetQCamera

属性文档

aspectRatioMode : Qt::AspectRatioMode

如何缩放视频以适应图形项目的大小。

访问功能:

Qt::AspectRatioMode aspectRatioMode() const
void setAspectRatioMode(Qt::AspectRatioMode mode)

[read-only] nativeSize : const QSizeF

此属性用于保存视频的原始大小。

访问功能:

QSizeF nativeSize() const

通知信号:

void nativeSizeChanged(const QSizeF &size)

offset : QPointF

此属性用于保存视频项的偏移量。

QGraphicsVideoItem 在绘制视频时,将使用其左上角的偏移量。

访问功能:

QPointF offset() const
void setOffset(const QPointF &offset)

size : QSizeF

此属性用于保存视频项目的大小。

QGraphicsVideoItem 在绘制视频时,将根据其 fillMode 按比例调整大小。

访问功能:

QSizeF size() const
void setSize(const QSizeF &size)

[read-only] videoSink : QVideoSink* const

返回可向当前项目渲染视频帧的底层视频汇。此属性永远不会nullptr 。如何将视频帧呈现到QGraphicsVideoItem 的示例:

QGraphicsVideoItem *item = new QGraphicsVideoItem;
graphicsView->scene()->addItem(item);
graphicsView->show();
QImage img = QImage("images/qt-logo.png").convertToFormat(QImage::Format_ARGB32);
item->videoSink()->setVideoFrame(QVideoFrame(img));

访问函数:

QVideoSink *videoSink() const[see note below]

注: 可通过元对象系统和 QML 调用此函数。请参阅Q_INVOKABLE

另请参阅 QMediaPlayer::setVideoOutput

成员函数文档

[explicit] QGraphicsVideoItem::QGraphicsVideoItem(QGraphicsItem *parent = nullptr)

构造一个显示视频的图形项目。

parent 传递给QGraphicsItem

[override virtual noexcept] QGraphicsVideoItem::~QGraphicsVideoItem()

销毁一个视频图形项目。

[override virtual] QRectF QGraphicsVideoItem::boundingRect() const

重实现:QGraphicsItem::boundingRect() const.

[override virtual] void QGraphicsVideoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)

重实现:QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)。

[override virtual] int QGraphicsVideoItem::type() const

重实现:QGraphicsItem::type() 常量。

返回代表视频项目类型的 int。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.