C++ Qt设计器:嵌套小部件不是成员?

C++ Qt设计器:嵌套小部件不是成员?,c++,qt,widget,C++,Qt,Widget,Im使用Qt Creator 3.2.1。 使用Qt设计器,我进行了基本的设计:通过添加一个普通的QWidget并将其升级到我的自定义窗口,我向我的主窗口添加了一个自定义小部件(CustomWidget widget)。 在这个自定义小部件中,我添加了一个QGraphicsView(QGraphicsView视图) Qt Designer的对象浏览器正确显示项目的层次结构:小部件内的视图和主窗口内的小部件 但是,该表单生成的ui_mainwindow.h提供了: // in ui_mainwin

Im使用Qt Creator 3.2.1。 使用Qt设计器,我进行了基本的设计:通过添加一个普通的QWidget并将其升级到我的自定义窗口,我向我的主窗口添加了一个自定义小部件(CustomWidget widget)。 在这个自定义小部件中,我添加了一个QGraphicsView(QGraphicsView视图)

Qt Designer的对象浏览器正确显示项目的层次结构:小部件内的视图和主窗口内的小部件

但是,该表单生成的ui_mainwindow.h提供了:

// in ui_mainwindow.h
class Ui_MainWindow
{
public:
    CustomWidget *widget;
    QGraphicsView *view;
    // ...
};
当我真的期待:

// in ui_mainwindow.h
class Ui_MainWindow
{
public:
    CustomWidget *widget;
    // ...
};

// in customwidget.h
class CustomWidget
{
public:
    QGraphicsView *view;
    // ...
};
另一个小部件的嵌套小部件不应该是它的成员吗


如何在Qt设计器中调整我的类设计以使视图成为小部件的成员?

Qt
中,定义小部件层次结构时使用的规则不是包含,而是父级<如果
widget2
widget1
的父级,而不是类
widgetype2
包含
widgetype2
类型的成员,则类型
widgetype1
的code>widget1将在类型
widgetype2
widget2
内部绘制<通过在
widget2
的构造函数中将
widget2
作为父项传递,或者使用
widget2.setParent(widget1),可以将code>widget2
设置为
widget1
的父项。布局还可以定义父/子层次结构

是的,您可以拥有包含和定义其他对象的对象类型,但是如果您不将
this
作为成员对象的父对象传递,则不会在容器类类型小部件中绘制成员对象


在您的情况下,不需要有多个类,您只需将要作为容器的对象设置为要作为子对象的对象的父对象。有关更多信息,我建议您阅读和的
Qt
文档。

谢谢您的回答。小部件绘图没有问题。问题是,在我看来,Qt设计器在父窗口小部件中不包含嵌套窗口小部件。您希望创建CustomWidget的多个实例。将QGraphicsView*视图包含在其中更有意义。