[英]Qt designer: nested widget is not a member?
我正在使用Qt Creator 3.2.1。 使用Qt Designer,我做了基本的设计:通过添加一个普通的QWidget并将其提升到我的自定义窗口中 ,我在主 窗口中添加了一个自定义窗口小部件( CustomWidget widget )。 在该自定义小部件中,我添加了QGraphicsView( QGraphicsView视图 )。
Qt Designer的对象浏览器正确显示了项目的层次结构: 小 部件内的视图和mainwindow中的 小 部件 。
但是,表单生成的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中调整类设计以使小部件的 视图成为成员?
在Qt
,用于定义窗口小部件层次结构的规则不是包含而是育儿。 widget1
类型的WidgetType1
将内部绘制widget2
类型的WidgetType2
如果widget2
是父widget1
,不如果类WidgetType2
包含类型的成员WidgetType2
。 widget2
可设定的父widget1
通过使widget2
作为母体中的构造widget2
或通过使用widget2.setParent(widget1);
。 布局还可以定义Parent/child
层次结构。
是的,您可以具有包含并定义其他对象的对象类型,但是如果不将this
作为父对象传递给成员对象,则不会在容器类类型窗口小部件内绘制成员对象。
在您的情况下,不需要多个类,您只需要使要成为容器的对象成为要成为孩子的对象的父级即可。 有关更多信息,我建议阅读Qt
文档“ 布局管理”和“ 对象树和所有权” 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.