C++ Qt、多重继承、包装器或事件筛选器

C++ Qt、多重继承、包装器或事件筛选器,c++,qt,qt-signals,C++,Qt,Qt Signals,我有一些不同的基于QGlWidget的显示小部件,我需要将它们嵌入基于MDI或QDockwidget的应用程序中。但是我需要在我的显示小部件中处理一些MDI/Dock特定事件(最小化/Dock等) 选项包括: 乘法从QGlWidget和QMBwindow/QDockWidget继承显示小部件。乘法继承和信号/插槽有任何问题吗 将显示封装在qmdusubwindow/QDock派生的小部件中,但是我必须将所有显示的外部函数封装在Mdi/Dock包装小部件中 当我创建一个新窗口时,创建一个临时Mdi

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

选项包括:
乘法从QGlWidget和QMBwindow/QDockWidget继承显示小部件。乘法继承和信号/插槽有任何问题吗

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

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

一些QSignalMapper魔术,我可以在QGlWidget中接收qmdusbwindow/QDockWidget特定信号,MDI/dock widget是其他widget的容器,因此将它们的功能与显示widget混合并不是一个很好的解决方案,因为最终会得到一个看起来像容器但不能包含任何内容的可怕的混合widget。并不是说Qt会允许它,正如Jeremy所指出的那样


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

Qt不支持在同一对象中两次从QObject继承,因此假设QGIWidget是QWidget的子类,您的第一个选项不起作用…@JeremyFriesner-谢谢,我认为它不起作用,这正是我认为我必须要做的-我希望避免将每个displayWidget函数包装在容器小部件中,以便主窗口菜单/工具栏等可以调用它们。由于容器可以容纳不同类型的显示,它还必须检查它所包含的内容。有趣的是,尽管dockwidget的设计不同,但它可以从任何QWidget继承,看起来更像是一个接口类型类,而不是一个纯容器。