我有一个 Main QWidget
,它包含三个提升的小部件:A 来自 QGraphicsView
, B 派生自QLabel
,C 派生自QWidget
。
在应用程序退出时,我需要在 A 之前销毁 B 和 C,但我发现自 A 以来, B 和C parent 自动设置为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?
最佳答案
如果您的 3 个小部件不属于同一布局,您可以手动编辑 .ui
文件以将适当的父级分配给小部件。制作小部件 A
小部件的父项 B
你可以剪掉<widget>
属于 B
的标签并将其粘贴到内部 A
的 <widget>
标签。像这样:
<widget class="QWidget" name="A">
<widget class="QWidget" name="B">
...
</widget>
</widget>
请注意,QtCreator 有合法的方式来编辑.ui
文件:在 .ui
上单击鼠标右键文件,然后选择“打开方式 -> 纯文本编辑器”。
但是注意:如果你有规则,这会破坏布局规则。 如果您不想破坏这种情况下的布局,您可以尝试通过代码在运行时重新分配父级:
bWidget->setParent(aWidget);
cWidget->setParent(aWidget);
在这种情况下,ui_*.h
中生成的代码实际上并不重要。文件——您将重置它。
关于c++ - 为提升的小部件设置父 QWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45481362/