Qt 5.0提供了一个新QWindow类.虽然这个类的文档非常全面,但我没有看到QWindow与QWidget类有什么不同,在哪种情况下你更喜欢前者.两者都提供了一种方便的方式,可以将各种事物可视化到屏幕上,两者都可以QPainter用于绘图,并且两者都有一种与OpenGL交互的方式.
在API描述中,它说:
应用程序通常会将QWidget或QQuickView用于其UI,而不是直接使用QWindow.
所以这似乎不是窗口的优势.此外,它指出:
Windows可能会占用大量内存.通常的测量是宽度乘以高度乘以颜色深度.窗口可能还包括多个缓冲区以支持双缓冲和三缓冲,以及深度和模板缓冲区.
哪个似乎不赞成使用QWindow.那么在什么情况下你会使用它?
pep*_*ppe 69
QWindow由于gui/widgets分裂,已在Qt 5.0中引入.QWidget现在住在自己的图书馆(QtWidgets); 有必要为非基于小部件的应用程序提供"顶层窗口"的抽象,从而QWindow创建 - 并生活在其中QtGui.
有一整类基于非小部件的应用程序:所有使用QtQuick2的应用程序.它们根本不使用QtWidget库,事实上,在使用它们时,你总是以某种方式明确地使用QWindows(QQuickView继承自QWindow).
即使使用小部件,Qt内核也会为您创建顶级QWindows,这样也可以使这些QWindow对象的属性和标志与相应的顶级QWidgets保持同步.这样你就可以像往常一样处理小部件,而根本不知道QWindow.现有应用程序将继续按预期运行等.
到目前为止,我一直在使用QWindows 的唯一原因是一个非常具体的用例:绘制纯OpenGL内容.这很容易实现(通过在窗口上设置OpenGL表面类型),并避免引入额外的依赖项(QtWidgets,QtOpenGL等,这些都有库大小的成本); 它允许在10行代码中创建一个OpenGL绘图表面, 它可以在Linux,Windows,Mac,QNX,"嵌入式Linux"上运行,也很可能在Android和iOS上运行.从这个角度来看,它可以作为完美的SDL替代品.:)
| 归档时间: |
|
| 查看次数: |
13441 次 |
| 最近记录: |