我正在使用Qt Creator 3.2.1。 使用Qt Designer我做了基本设计:我通过添加一个普通的QWidget并将其提升到我的自定义QWidget,将一个自定义小部件( CustomWidget小部件)添加到我的主窗口。 在该自定义小部件中,我添加了一个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 Designer中调整我的类设计以使 view 成员 widget ?
答案 0 :(得分:0)
在Qt
中,用于定义窗口小部件层次结构的规则不是包含,而是包含父级。如果widget1
是WidgetType1
的父级,则widget2
类型WidgetType2
内的widget2
将被widget1
抽取,而不是类WidgetType2
的{{1}} 1}}包含WidgetType2
类型的成员。 widget2
可以设置为widget1
的父级,方法是将widget2
作为widget2
的构造函数中的父级或使用widget2.setParent(widget1);
。布局也可以定义Parent/child
层次结构。
是的,您可以拥有包含和定义其他对象的对象类型,但如果您没有将this
作为父对象传递给成员对象,则不会在容器类类型中绘制成员对象窗口小部件。
在你的情况下,不需要有多个类,你只需要将你想成为容器的对象父对象设置为你想成为子对象的对象。有关详情,建议您阅读Layout Management和Object Trees & Ownership的Qt
文档。