昨天因为OpenCv自带的 cvNamedWindow 功能不多,所以想修饰一下,添加几个控件上去,结果获取不到句柄或指针。试了半天无效,于是就准备放弃,打算自己写一个对话框,但是感觉有点麻烦,而且心里不爽,想解决这个问题,于是今早又试了试,成功了。
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,运行,崩溃。提示在不同的线程中,无法跨线程操作。但是这个函数的实现我是暂时不能改的,最好还是用这个窗口,难道没办法了吗?