2

我有几个不同的基于 QGlWidget 的显示小部件,我需要将它们嵌入到基于 MDI 或 QDockwidget 的应用程序中。但我需要在我的显示小部件中处理一些 MDI/Dock 特定事件(最小化/停靠等)

选项是:
乘以从 QGlWidget 和 QMdiSubWindow/QDockWidget 继承显示小部件。多重继承和信号/插槽有任何问题吗?

将显示器封装在 QMdiSubWindow/QDock 派生的小部件中,但随后我必须将显示器的所有外部函数包装在 Mdi/Dock 包装器小部件中。

当我创建一个新窗口时,创建一个临时 Mdi/Dock 小部件,将所有特殊信号连接到显示器中的插槽,然后将显示器连接到它并显示它。但这不适用于事件。

一些 QSignalMapper 魔术,我可以在 QGlWidget 中接收 QMdiSubWindow/QDockWidget 特定信号

4

1 回答 1

2

MDI/dock 小部件是其他小部件的容器,因此将它们的功能与显示小部件混合并不是一个很好的解决方案,因为您最终会得到一个看起来像容器但不能包含任何东西的可怕混合小部件。并不是说 Qt 会像 Jeremy 所说的那样允许它。

如果您的 QGLWidget 需要来自其父容器的事件(例如最小化、停靠等),为什么您不能在 QGLWidget 中为它们创建伙伴方法,并在父容器执行操作时调用它们?

于 2012-04-17T07:04:15.887 回答