Qt下OpenCv中cvGetWindowHandle的使用

昨天因为OpenCv自带的 cvNamedWindow 功能不多,所以想修饰一下,添加几个控件上去,结果获取不到句柄或指针。试了半天无效,于是就准备放弃,打算自己写一个对话框,但是感觉有点麻烦,而且心里不爽,想解决这个问题,于是今早又试了试,成功了。


尝试了多次使用cvGetWindowHandle来获取视频窗口的句柄,都不成功,是用了包括DestroyWindow、IsWindow、EnumChildWindows在内的多个API,也表示获取到的是无效句柄。cvGetWindowHandle函数的注释上写了:
get native window handle (HWND in case of Win32 and Widget in case of X Window
虽然没怎么看懂,大致意思就是说用win32原生窗口的话,获取到的是HWND句柄,入伙是X Window,那就是X Window,百度了下X Window,感觉还是不对,因为Linux下才是X Window,我现在是在Windows下,为啥不是HWND?不管了试试就知道。
QWidget* cvWidget = (QWidget*)cvGetWindowHandle( m_cvTitle );

然后再获取标题,用qDebug()打印,正确!


既然获取到了QWidget,那么向这个窗口添加控件怎么样?于是添加了一个QPushButton,运行,崩溃。提示在不同的线程中,无法跨线程操作。但是这个函数的实现我是暂时不能改的,最好还是用这个窗口,难道没办法了吗?


posted @   撬动未来的支点  阅读(315)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示