私はあちこちで次のようなQtGUI構文を見てきました:
myDialog::myDialog(QWidget *parent, Qt::WFlags flags):QDialog(parent, flags)
{
QPushButton *button = new QPushButton("&Download", this);
QVBoxLayout *layout = new QVBoxLayout(this);
//something that can throw here
layout ->addWidget(button );
setLayout(layout);
}
私がボタンの親として与えている「これ」とレイアウトが完全に構築されていないため、子を破壊しない可能性があるため、例外が発生した場合にこれがリークする可能性があるかどうかを常に考えていました。
MSVC2010 Qt4.8.3で試してみましたが、基本QObjectクラスが完全に作成されると(もちろん最初に実行されます)、コンストラクター内の他のオブジェクトに「this」を渡しても問題ないようです。オブジェクトは破棄されます。正しく。
Qtのドキュメントでこれを保証する場所は見つかりませんでしたが、誰かが私にそれを指摘してくれるので、これが将来変更されないことを保証できますか?