QWidget
をインスタンス化するときには、QObjectPrivate
のインスタンスは2つありません。
protected:
QObject(QObjectPrivate &dd, QObject *parent = 0);
protectedコンストラクタ経由で渡されるQObjectPrivateのインスタンスを設定します:あなたはQObject
のヘッダファイルをよく見ると、あなたが保護されたコンストラクタわかります
QObject::QObject(QObjectPrivate &dd, QObject *parent)
: d_ptr(&dd)
をこれがありますコンストラクタは異なるコンストラクタのすべてによって呼び出されます。 QWidgetコンストラクタは、QWidgetPrivate
のインスタンスに渡します。これは、指定したように、QObjectPrivate
のサブクラスです。したがって、QWidgetにはQObjectPrivateのインスタンスが1つしか存在しません。
QWidget::QWidget(QWidget *parent, Qt::WindowFlags f)
: QObject(*new QWidgetPrivate, 0), QPaintDevice()
{
QT_TRY {
d_func()->init(parent, f);
} QT_CATCH(...) {
QWidgetExceptionCleaner::cleanup(this, d_func());
QT_RETHROW;
}
}
:
はここでこれを示しデフォルトQWidget
コンストラクタです