前段时间,我使用QT Designer / QT Creator编写了GUI。
对于这个问题,我将首先说明使用上述IDE创建GUI的一般过程的原理图:

  • 使用QT Designer创 build 计->获取.ui文件
  • .ui文件被转换为头文件,您尤其会得到类似“UIbasisclass.h”(带有UIbasisclass类)的信息。
  • 您可以自己创建一个私有(private)成员UIsubclass来创建类似“UIsubclass.h”(带有UIbasisclass ui类)的内容。

  • UIsubclass中的代码:
    ...
            private:
    
           Ui::UIbasisclass ui;
    ...
    

    最后,您将在主方法->代码中创建一个UIsubclass对象:
    ...
        UIsubclass *MyGUI = new UIsubclass();
    ...
    

    其中UIsubclass的构造函数由以下其他代码组成:
    ...
        ui.setupUi(this);
    ...
    

    简而言之:我们有一个UIsubclass,主要负责应用程序方法,但还有一个UIbasisclass的私有(private)成员,名为ui,主要由设计代码组成。
    当我们创建UIsubclass对象时,其私有(private)成员UIbasisclass uiUIsubclass的构造函数中初始化为UIsubclass对象本身(?)。 [请参阅:此指针]

    我的问题是:
  • 为什么UIsubclassUIbasisclass继承的方式中没有使用继承?而是UIbasisclass的一个对象成为UIsubclass的成员。
  • 这是一些特定的有利概念(如果是,它具有哪些优点或如何命名?),或者它仅仅是QT代码结构的必要条件吗?

  • 让我知道是否需要指定我的问题或是否有任何问题。

    最佳答案

    您可以使用私有(private)继承,甚至可以在o​​jit_a中进行记录。

    由于Qt Creator使用的模板,默认使用ui的私有(private)成员,Qt本身并不关心。

    07-28 04:42