在Qt中,我可以通过编写将子窗口小部件嵌入其父项中,还是必须使用new
创建它们?Qt:子对象可以在他们的父对象中组成吗?
class MyWindow : public QMainWindow
{
...
private:
QPushButton myButton;
}
MyWindow::MyWindow()
: mybutton("Do Something", this)
{
...
}
文档说,当它的父被破坏从QObject
派生的任何对象会自动销毁;这意味着致电delete
,在上面的例子中会崩溃。
我必须使用以下吗?
QPushButton* myButton;
myButton = new QPushButton("Do Something", this);
编辑
的答案是多种多样的,基本上可以归结为三种可能性:
- 是,构图OK。 Qt可以找出对象是如何分配和仅
delete
堆中分配的对象(这是如何工作的?) - 是,成分是好的,但不指定父,因为父原本叫
delete
上该对象(但是不会将无母公司的小部件变成顶级窗口?) - 否,小部件总是需要堆分配。
哪一个是正确的?
你的回答几乎是正确的,但销毁顺序不正确。见例如http://msdn.microsoft.com/en-us/library/8183zf3x%28v=vs.100%29.aspx – hmuelner 2012-04-24 10:11:05
@hmuelner修复。 – Oktalist 2014-07-26 20:49:47