Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用QGraphicscene上的本机窗口句柄(HWND)在QWidget中显示来自设备驱动程序的视频_C++_Qt_Video_Hwnd - Fatal编程技术网

C++ 使用QGraphicscene上的本机窗口句柄(HWND)在QWidget中显示来自设备驱动程序的视频

C++ 使用QGraphicscene上的本机窗口句柄(HWND)在QWidget中显示来自设备驱动程序的视频,c++,qt,video,hwnd,C++,Qt,Video,Hwnd,这与我前面的问题有关 我一直在QGraphicscene/视图中通过QPixMapItem转换和显示视频帧,即不使用OpenGL。 这种转换导致了处理器负载,通过将设备驱动程序直接绘制到窗口可以避免这种负载,任何缩放问题都暂时搁置 虽然我能够将视频显示到独立的QWidget->winID()(,HWND,另请参见),但将此小部件添加到场景不会产生视频(它不可见)。从QPixMapItem进行多重继承以便能够使用(“此场景获取项目的所有权”)也没有帮助 当对象成为场景的子对象时,是否会丢失其WId

这与我前面的问题有关

我一直在QGraphicscene/视图中通过QPixMapItem转换和显示视频帧,即不使用OpenGL。 这种转换导致了处理器负载,通过将设备驱动程序直接绘制到窗口可以避免这种负载,任何缩放问题都暂时搁置

虽然我能够将视频显示到独立的QWidget->winID()(,HWND,另请参见),但将此小部件添加到场景不会产生视频(它不可见)。从QPixMapItem进行多重继承以便能够使用(“此场景获取项目的所有权”)也没有帮助

当对象成为场景的子对象时,是否会丢失其WId? 不幸的是,必须关闭其他功能,即使在项的构造函数中加载QImage时,也不会显示任何内容。我将不得不进一步调查

编辑1: 从QWidget和QGraphicsPixmapItem继承的类能够显示一个pixmap,正如用
myWidget->setPixmap(QPixmap::fromImage(QImage(“test.png”))测试的那样。我以前的图像加载器只是坏了


在GraphicsView的顶部显示小部件将是一件棘手的事情,因为必须实现缩放和关闭视图位置,但我怀疑这是否会无故障工作(我认为这是一项相当大的工作)。

qgraphicscene
中显示
QWidget
相当棘手。有关更多信息,请参阅说明。基本上,您在
QGraphicsView
中看到的小部件不是真正的小部件
QGraphicsView
只是将绘制事件重定向到底层不可见的
QWidget
。显然,Qt对视频重定向一无所知,因此无法将其转换到场景中

我认为你们不应该把你们的小部件放在场景里面。例如,将其放置在图形视图之上。