Qt,多重继承,包装或事件过滤器

时间:2012-04-16 23:10:09

标签: c++ qt qt-signals

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

选项包括:
Multiply从QGlWidget和QMdiSubWindow / QDockWidget继承显示小部件。乘法继承和信号/槽的任何问题?

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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