【问题标题】:Which Class should inherit a QMainWindow? [duplicate]哪个类应该继承 QMainWindow? [复制]
【发布时间】:2019-09-09 08:28:29
【问题描述】:

我是 Qt 新手,这可能是一个非常愚蠢的问题。我正在开发一个项目,其中包含 Visual Studio (C++) 中的几个子项目。整个项目只有一个用户界面 (UI),为此使用了 Qt。

在所有子项目中,只有2个类继承自QMainWindow。

作为一个新手,我想知道,哪些类应该继承QMainWindow?

【问题讨论】:

  • 实际上,没有一个类必须继承自QMainWindow。您可以将小部件“插入”在一起(例如在main() 中。-我的大多数小示例都是这样完成的。)但是,QMainWindow 内容之间可能存在更紧密的相互依赖性(关于小部件和处理的数据)通过这些小部件)。要将事物粘合在一起,派生QMainWindow 并使所有相互依赖的东西成为此类的成员可能是有意义的。或者,您可以创建另一个应用程序类,其中 QMainWindow 本身就是一个成员。
  • ...这是一个设计问题 - 您提供的信息较少,很难判断。 ;-)
  • @Murphy:我不是在问区别。我想知道你应该从QMainWindow继承的情况。
  • 您还没有阅读接受的(也是唯一的)答案,是吗? “QMainWindow 是围绕主窗口的常见需求而设计的。它为菜单栏、状态栏、工具栏和其他小部件预定义了位置。”因此,当您需要这些设施时,您可以从中获得。另见docs:“主窗口提供了构建应用程序用户界面的框架。”

标签: c++ qt


【解决方案1】:

就像任何其他类一样,QMainWindow 应该在需要它提供的功能时被继承(或者更确切地说是自定义该功能)。特别是QMainWindow(相对于QWidget)提供了内置菜单栏、可停靠工具栏、状态栏、可停靠子小部件、一种保存和恢复其状态的方法,以及其他一些可能需要完整的细节图形用户界面应用程序。但是任何QWidget 都可以是顶级小部件(应用程序的“主窗口”),因此不需要使用QMainWindow 作为顶级小部件。如果一个人不需要/想要任何这些额外功能,就没有理由继承/使用QMainWindow.

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 2021-09-19
    • 2013-09-26
    • 1970-01-01
    • 2012-02-17
    • 2016-09-02
    • 2023-03-31
    • 2015-11-16
    相关资源
    最近更新 更多