2014-11-23 36 views
0

即时通讯使用Qt Creator 3.2.1。 使用Qt设计器我做了基本设计:通过添加一个普通的QWidget并将其提升到我的自定义小部件,我在我的mainwindow中添加了一个自定义小部件(CustomWidget小部件)。 在那个自定义小部件中,我添加了一个QGraphicsView(QGraphicsView视图)。Qt设计师:嵌套部件不是会员?

Qt设计的对象的浏览器正确地显示的项目的层次结构:视图内插件插件主窗口

然而,由形式产生的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设计使视图部件的会员吗?

回答

0

Qt中,用于定义小部件层次结构的规则不是包含而是父母。 WidgetType1类型的widget1将内部WidgetType2类型的widget2绘制如果widget2widget1父,而不是如果类WidgetType2包含WidgetType2类型的成员。 widget2可以通过在widget2的构造函数中将widget2作为父项或通过使用widget2.setParent(widget1);而设置为widget1的父项。布局也可以定义Parent/child层次结构。

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

在你的情况下,不需要有多个类,你只需要让你想要成为孩子的物体成为父母的对象。欲了解更多信息,我建议阅读Layout ManagementObject Trees & OwnershipQt文档。

+0

感谢您的回答。小部件绘图不是问题。 问题是,Qt设计器不包含嵌套的小部件到父窗口小部件中,这在我看来是有意义的。 想要创建CustomWidget的多个实例的图像。 只有在它包含QGraphicsView *视图才更有意义。 – willard 2014-11-24 10:42:40