在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