本页内容

QGraphicsVideoItem Class

QGraphicsVideoItem 类提供了一个图形项,用于显示由QMediaPlayer 或QCamera 生成的视频。更多内容...

头文件: #include <qgraphicsvideoitem.h>
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 附加到QMediaPlayer 或QCamera 上,可使其显示该媒体对象的视频或图像输出。

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();

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

另请参阅 QMediaPlayer 、QVideoWidget 和QCamera 。

属性文档

aspectRatioMode : Qt::AspectRatioMode

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

访问函数:

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

[read-only] nativeSize : 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() const。

返回一个 int 类型值,表示视频项的类型。

© 2026 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.