我有一个简单的小部件层次结构:GraphWidget -> MotionWidget -> NodeWidget。我是 Qt 的新手,所以我不太确定某些内部是如何工作的。基本上,GraphWidget 创建一个 MotionWidget M并将M 的父级设置为自身。然后M离开并创建了一堆 NodeWidgets。然而,NodeWidgets 永远不会被绘制,它们的 paintEvent() 函数也不会被调用。
我尝试直接创建 MotionWidget,没有 GraphWidget,一切正常。那么,如果我将 GraphWidget 添加到层次结构中,为什么事情会中断呢?
这是我项目中相关代码的粘贴。我还在顶部包含了 GraphWidget::dumpObjectTree() 的输出。
编辑:忘记包含粘贴链接;)http://rafb.net/p/Zp39CF94.html
更新:我将 MotionWidget 包装到布局中。
前:
GraphWidget :: GraphWidget( QWidget *parent ) : QWidget( parent )
{
setFixedSize( 500, 500 );
MotionWidget *n = new MotionWidget( 5, this );
}
后
GraphWidget :: GraphWidget( QWidget *parent ) : QWidget( parent )
{
setFixedSize( 500, 500 );
QVBoxLayout *l = new QVBoxLayout;
MotionWidget *n = new MotionWidget( 5 );
l->addWidget( n );
setLayout( l );
}
现在,后者起作用了。即一切都被绘制。那么问题就变成了……为什么?为什么它在第一种情况下不起作用但在第二种情况下起作用?