关于QT nativeWindow
来源:互联网 发布:mac升级显卡 编辑:程序博客网 时间:2024/06/03 17:38
撸了两个多月的QT,脑袋一团浆糊,想把零碎的东西稍微粘合一下,否则永远不清不楚,flag就不立了,单纯先记一笔流水账,当然后面的账赊着,有朝一日来还掉,大可能性是直接失忆,《西部世界》里dolores说someday意味着永远也不,是否我的人格设定也纠缠了这个someday,不得而知,只能寄希望于finally。
1.系统级别 QApplication::setAttribute(Qt::AA_NativeWindows)
(1)设置Qt::AA_NativeWindows
所有控件均视为window,可通过QGuiApplication::allWindows()获取所有控件,然后获取窗口id和大小,并且,观察每个子widget大小(通过widget->geometry()获取),可发现均集中在屏幕左上角,并且在显示上,屏幕左上角均是矩形空白,并且随着缩放,矩形空白也在变化,widget大小也在变化,即整个widget是多个子widget的合并,每个widget在底层均有一个窗口系统的句柄和内存空间,对刷新会有一定影响。
对于依托父widget建立的widget,也有自己的窗口句柄,并且依然依附于父widget。
对于没有依托父widget建立的widget,有自己的窗口句柄,并且作为独立窗口,默认显示在屏幕左上角。
(2)不设置 Qt::AA_NativeWindows
只有toplevelWidget有本地窗口系统句柄,屏幕没有矩形空白,按照QT文档所述,非native_window由QT自己绘制。
对于依托父widget建立的widget,没有自己的窗口句柄,依附于父widget。
对于没有依托父widget建立的widget,有自己的窗口句柄,并且作为独立窗口,默认显示在屏幕左上角。
2.widget级别 setAttribute(Qt::WA_NativeWindow)
这个widget以及其祖先都会设置成native_window,并且父widget的所有子widget也都会变(enforceNativeChildren()函数),所以发现allWindows变多了,如果不需要所有祖先都变,需要加 setAttribute(Qt::WA_DontCreateNativeAncestors),如果不需要所有兄弟都变,需要加系统级参数QApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
3.widget的winId()函数和setAttribute(Qt::WA_NativeWindow)类似,并且返回widget的句柄id
- 关于QT nativeWindow
- 利用NativeWindow监视WndProc消息
- 利用NativeWindow监视WndProc消息
- Android NativeWindow render 打印输出
- 【Android】Android SurfaceFlinger之NativeWindow
- react nativewindow环境的搭建
- 【Qt】关于Qt【转】
- 关于QT
- 关于Qt
- 关于Qt
- 关于Qt
- 关于Qt
- 关于QT
- 关于QT
- 关于Qt
- 关于qt.
- 关于Qt
- 拦截窗体消息—使用NativeWindow
- 比努力更重要的三件事
- 图文翻页-兼容IE8和Chrome浏览器
- MOST 汽车多媒体网络系统学习总结
- Pig和Hive有什么不同
- 448. Find All Numbers Disappeared in an Array 找出数组中消失的数
- 关于QT nativeWindow
- ERP项目管理——项目阶段及交付物
- CentOS 7 安装 Redis-3.2.6
- JSP整理总结--9大内置对象、4个作用域
- JSP-JSTL
- Spring Annotations
- adb取出手机安装的应用
- 增加exe的托盘图标
- Spring MVC 4 - 多视图输出