QWidgets可以添加到QWindow中吗?

4

现在推荐使用QWindow进行OpenGL绘制。能否将窗口添加到小部件中?如果可以,应该如何操作?如果不行,那么在使用Qt5的OpenGL程序中如何添加小部件?


可能是重复的问题:如何从自定义窗口创建Qt表单类? - Dmitry Sazonov
你的最终结果应该是什么样子?你可以考虑采用另一种方式——使用“QWidget::createWindowContainer”将你的GL窗口嵌入到QWidget层次结构中。 - peppe
@peppe QWidget::createWindowContainer的问题在于它阻止了我从传入的窗口对象中调用方法。这也使得无法继承。 - Ben
为什么它会防止这样的事情发生?!使用它返回的 QWidget * 来进行 UI 管理(布局等);使用你传递给它的 YourWindow * 来处理其他任何事情(逻辑)。 - peppe
@peppe 在创建容器后,我对窗口对象所做的任何更改似乎对小部件没有影响。 - Ben
请问您可以详细说明一下吗? - peppe
1个回答

2
一个应用程序通常使用 QWidgetQQuickView 来构建 UI,而不是直接使用 QWindowQWindowQWidget 更低级别。如果您想直接使用 QWindow,需要做更多的工作才能完成任务。您需要手动完成所有与绘图相关的工作,这并不容易。
然而,如果您确实希望使用 QWindow/QGuiApplication 而不是 QWidget/QApplication,则可以使用 QBackingStore(由 QWidget 使用)或 SceneGraph(由 QQuickQWindow::exposeEvent() 中使用)。
您可以在此处查看使用 QPainter 构建最小化 QWindow 应用程序的示例:这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接