这与我之前的问题有关Qt GLWidget in GraphicsScene for fast video display from image data (C++ , Windows)? .
我一直在通过 QGraphicsScene / View 中的 QPixMapItem 转换和显示视频帧,即不使用 OpenGL。转换导致处理器负载,可以通过将所述设备驱动程序直接绘制到窗口来避免,暂时搁置任何缩放问题。
虽然我能够将视频显示到独立的 QWidget->winID() (QWidget、 HWND 、Qt::WA_NativeWindow,另请参阅Using Qt with DirectX?),但将此小部件添加到场景中不会产生视频(它是不可见的)。从 QPixMapItem 多重继承以能够使用QGraphicsScene::addItem()(“此场景获取项目的所有权。”)也没有帮助。
当对象成为场景的孩子时,它会失去它的 WId 吗?
不幸的是,必须关闭其他东西,即使在项目的构造函数中加载 QImage 时,也没有显示任何内容。我将不得不进一步调查。
编辑 1:从 QWidget 和 QGraphicsPixmapItem 继承的类能够显示像素图,如myWidget->setPixmap( QPixmap::fromImage( QImage("test.png") ) );
. 我以前的图像加载器根本就坏了。
在 GraphicsView 顶部显示小部件会很棘手,因为必须实现缩放和关闭视图位置,但我怀疑这将不会出现故障(我认为这是一项相当多的工作)。