为促销的小部件设置父QWidget

时间:2017-08-03 10:17:57

标签: c++ qt parent-child qt-designer

我有一个主要 QWidget,其中包含三个推广的小部件: A 派生自QGraphicsView B 派生来自QLabel的{​​{1}}和 C 。来自QWidget 在应用程序退出时,我需要在 A 之前销毁 B C ,但我发现自 A 以来, B C 父级会自动设置为 Main A 会先被销毁。这可以解决,将 A 设置为 B C 父级。

生成的 ui_ProjectName.h 文件包含:

a = new A(Main);
b = new B(Main);
c = new C(Main);

但它应该是:

a = new A(Main);
b = new B(a);
c = new C(a);

有没有办法直接从Qt Designer执行此操作以生成正确的 ui_ProjectName.h

1 个答案:

答案 0 :(得分:0)

如果您的3个小部件不属于同一布局,您可以手动编辑.ui文件,为小部件指定正确的父级。要使窗口小部件A成为窗口小部件B的父级,您只需剪切属于<widget>的{​​{1}}标记并将其粘贴到 {{1}内} B标记。像这样:

A

请注意,QtCreator有合法的方式来编辑<widget>文件:在<widget class="QWidget" name="A"> <widget class="QWidget" name="B"> ... </widget> </widget> 文件上单击鼠标右键,然后选择“打开方式 - &gt;纯文本编辑器”。

但是要注意:如果你拥有它们,这将破坏布局规则。 如果你不想打破这种情况的布局,你可以尝试通过代码在运行时重新分配父:

.ui

在这种情况下,.ui文件中生成的代码实际上并不重要 - 您将重置它。