QWidgets可以添加到QWindow吗?
Posted
技术标签:
【中文标题】QWidgets可以添加到QWindow吗?【英文标题】:Can QWidgets be added to QWindow? 【发布时间】:2014-05-29 08:32:18 【问题描述】:现在推荐使用 QWindow 进行 OpenGL 绘图。是否可以在此窗口中添加小部件?如果是这样,怎么做?如果没有,我应该如何使用 Qt5 向 OpenGL 程序添加小部件?
【问题讨论】:
How to create a Qt form class from a custom window?的可能重复 您的最终结果应该是什么样子?您可以考虑换一种方式——使用QWidget::createWindowContainer
将您的 GL 窗口嵌入到 QWidget 层次结构中。
@peppe QWidget::createWindowContainer 的问题是它阻止我从传入的窗口对象调用方法。它也使得无法继承。
为什么会阻止这样的事情发生?!使用它返回的QWidget *
进行 UI 管理(布局等);使用 YourWindow *
传递给它的其他任何东西(逻辑)。
@peppe 在创建容器后我对窗口对象所做的任何更改似乎都对小部件没有影响。
【参考方案1】:
应用程序通常将QWidget
或QQuickView
用于其UI,而不是直接使用QWindow
。 QWindow
比 QWidget
更低级别。如果您想直接使用QWindow
,则需要做更多的工作才能完成这项工作。您应该手动完成所有与绘图相关的事情,这并不容易。
然而,如果你真的想要一个QWindow
/QGuiApplication
而不是QWidget
/QApplication
,你可以使用QBackingStore,它被QWidget
使用,或者SceneGraph
被@使用987654335@QWindow::exposeEvent()
.
您可以查看使用QPainter
here 的基于QWindow
的最小应用程序示例。
【讨论】:
以上是关于QWidgets可以添加到QWindow吗?的主要内容,如果未能解决你的问题,请参考以下文章