qt创建者中的自定义类

时间:2015-10-24 18:20:28

标签: c++ qt user-interface qt-creator

我是Qt的新手,对C ++很新,但我需要帮助解决这个问题。 我有一个名为HybridStack的自定义类,我希望它扩展一个QStackedWidget和一个QMainWindow。 我希望它扩展一个QStackedWidget,以便我可以使用尽可能多的页面,我希望它扩展一个QMainWindow,这样我就能够让每个页面都有自己的MenuBar,不同页面的菜单内容不同。

  

我想将此自定义类HybridStack添加到Qt Designer中   从QStackedWidget推广它。

这可能吗?如果是的话,你能告诉我如何做到这一点吗?如果不可能那么什么是另类?最重要的是,我需要在Designer中使用它,因为我需要使用qmake

1 个答案:

答案 0 :(得分:0)

您无法从QStackedWidget和QMainWindow派生,因为这两者都是从QWidget派生的。如果您这样做,那么您最终会得到Dreaded Diamond。你必须改用构图。

即便如此,我还不确定将QMainWindow放在QStackedWidget中是否能正常工作,因为它被设计为顶级项目(即它直接显示为窗口,不嵌入另一个窗口QWidget中)。完成所需内容的另一种方法(更改标签时更改菜单栏)如下:

  1. 将您的顶级项目设为QMainWindow
  2. 使中央窗口小部件成为从QStackedWidget派生的自定义窗口小部件
  3. 当堆栈小部件中显示的项目发生更改时,您可以调用QMainWindow :: setMenuBar来更改菜单栏。 QStackWidget中的每个小部件都可以拥有自己用于此目的的QMenuBar实例。