回复: Qt编写视频播放器(vlc内核)
#11 回 yyzq 的帖子 [stlcours 07-24 00:15]
yyzq:你这种情况可能需要设置一些属性,给你的播放窗口加
setAttribute(Qt::WA_NativeWindow);
setAttribute(Qt::WA_DontCreateNativeAncestors);
....... (2018-07-23 09:01)
这些标记应该什么时候使用呢?做了这么久的Qt,从来没有碰到这种情况啊。
另外,如果QWidget单独进行显示的话(而不是把它放在其它QWidget当成一个子部件),是不是就不用这样setAttribute(Qt::WA_NativeWindow);设置了呢?因为虽然是QWidget,但它本身就还是有窗口句柄的呀。
app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); 又是什么意思呢?兄弟窗口?哪里来的兄弟窗口呢,不都是子窗口吗?
#12 回 奋斗滴菜鸟 的帖子 [stlcours 07-24 00:16]
奋斗滴菜鸟:多谢大神,目前测试了好久没有出现那个问题,应该是没问题了,终于解决了这个老大难 (2018-07-23 09:30)
你把你软件的窗口关系详细描述一下啊,看得稀里糊涂的、不太理解。
#13 回 stlcours 的帖子 [yyzq 07-24 09:12]
stlcours:这些标记应该什么时候使用呢?做了这么久的Qt,从来没有碰到这种情况啊。
另外,如果QWidget单独进行显示的话(而不是把它放在其它QWidget当成一个子部件),是不是就不用这样setAttribute(Qt::WA_NativeWindow);设置了呢?因为虽然是QWidget,但它本身就还是有窗口句柄的呀。
..(2018-07-24 00:15)
既然没有遇到这种问题就不用忧虑了,遇到的时候想办法去解决就好了,永远有学不完的东西,永远没有完全准备好的时候,嗯,就是这样。。。至于上面说的那些属性,文档上有很好的解释,我就不赘言了。。。
#14 回 stlcours 的帖子 [奋斗滴菜鸟 07-24 09:17]
stlcours:你把你软件的窗口关系详细描述一下啊,看得稀里糊涂的、不太理解。 (2018-07-24 00:16)
首先,我觉得一般的开发用不到设置这玩意,在需要用到句柄的时候可能需要设置,,你百度看看alien和native窗口的信息看看,兄弟窗口比如说你主窗口中有两个播放窗口,这两个播放窗口都是主窗口的子窗口,不是兄弟嘛。。。一般qt整个窗口只有一个句柄,,就是主窗口的句柄,,其他的都是绘制的,当你使用winid获取子窗口句柄时候,子窗口也就变成了nativewidget,,顺带着他的父类也会变,,,百度吧,我这也是百度看到的,尚未验证,,,
#15 回 奋斗滴菜鸟 的帖子 [stlcours 07-24 17:46]
奋斗滴菜鸟:首先,我觉得一般的开发用不到设置这玩意,在需要用到句柄的时候可能需要设置,,你百度看看alien和native窗口的信息看看,兄弟窗口比如说你主窗口中有两个播放窗口,这两个播放窗口都是主窗口的子窗口,不是兄弟嘛。。。一般qt整个窗口只有一个句柄,,就是主窗口的句柄,,其他 .. (2018-07-24 09:17)
谢谢。主要是没有想到你们还会有并排播放的情况,毕竟做安防的和我们看电影的不一样吧。其次,除了主窗口的句柄,其实Qt也为每个单独显示的QWidget申请了句柄的,而不仅仅只有主窗口有句柄。为了验证,我用spy++实测了我做的软件,与我所想的完全一致。
>>当你使用winid获取子窗口句柄时候,子窗口也就变成了nativewidget,,顺带着他的父类也会变
这个倒是没想到,算是金玉良言吧。