我有一个基于QWidget
的类,我需要从另一个对象实例化。
如果我在其父窗口小部件类的主体中创建窗口小部件,那就很好了:
new NodeWidget(rootItem, this); // this works
但是当我使用aux方法创建小部件时,却从未绘制过。
rootItem->createWidget(this); // internally rootItem does the same thing as above
方法本身:
void createWidget(QWidget * target) {
if (!_ui) _ui = new NodeWidget(this, target);
...
}
我看到它的方式,两种方法都做同样的事情,但第一种方法有效,而第二种无效。 NodeWidget
构造函数会运行,但窗口小部件不会出现在父窗口小部件中,并且从不调用paintEvent。有什么想法吗?
new QPushButton(this);
在父窗口小部件的构造函数中调用时有效,但在从mousePress事件调用时则不行。有什么区别?
答案 0 :(得分:0)
您是否为自定义小部件调用 show()?
如果子窗口小部件是在父窗口已显示之后创建的,则父子关系也无法显示子窗口,因此您需要显式调用 show() 。
但是当构造函数中添加了窗口小部件时,父窗体尚未显示,然后当显示父窗口时,它会自动显示未明确隐藏的所有子窗口。