我实际上是在 qt( container
) 中编写一个模块 inerhit from QWidget
,其中包含多个plot
s ,这些 s 表示graph
所有它们都 inerhit from QWidget
。
所以给出了:
- 1
container
可以有:- n
plot
s 其中每个包含 - 1
graph
.
- n
昨天我花了很多时间来找出一个错误。碰巧只有 n plot
(出于调试目的)在其构造函数中添加到容器中以捕获绘制事件。
plot
在 s 已经构建时通过相同方法添加的所有scontainer
都无法接收任何事件。
后来,在我请求帮助后,一位同事向我解释说,我的container
(位于mainwindow
-form 中)需要在 Qtdesigner 中分配一个布局。我试了一下,很惊讶它确实解决了我的问题。在将动态生成plot
的 s添加到 scontainer
并将它们添加到布局后,所有小部件都按预期接收事件。
但由于我无法理解他的解释,也不想再打扰他,所以我在这里问。
那么,为什么作为其他动态生成的 QWidgets 的子对象的动态生成的小部件需要作为子对象的父级mainwindow
来分配布局呢?如果这不仅仅是一个例外情况,为什么默认情况下没有分配它,而且我无法在网上找到有此类问题的案例?