diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp
index 5879066983a8bd3ece3c654c7c9e9079cea33ff8..9a728cd78ecb003b3cd1c797f4ef00c20df31594 100644
--- a/lib/quick/qquickwebengineview.cpp
+++ b/lib/quick/qquickwebengineview.cpp
@@ -97,10 +97,9 @@ void QQuickWebEngineViewPrivate::focusContainer()
     q->forceActiveFocus();
 }
 
-QQuickWebEngineView::QQuickWebEngineView()
-    : d_ptr(new QQuickWebEngineViewPrivate)
+QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent)
+    : QQuickItem(*(new QQuickWebEngineViewPrivate), parent)
 {
-    d_ptr->q_ptr = this;
 }
 
 QQuickWebEngineView::~QQuickWebEngineView()
diff --git a/lib/quick/qquickwebengineview_p.h b/lib/quick/qquickwebengineview_p.h
index 2aa34c0333d26534b5fa8f6d8900d65efc8c0787..484f6bba6e4deb7355bb01452128c8020289a51d 100644
--- a/lib/quick/qquickwebengineview_p.h
+++ b/lib/quick/qquickwebengineview_p.h
@@ -43,7 +43,6 @@
 #define QQUICKWEBENGINEVIEW_P_H
 
 #include <QQuickItem>
-#include <QScopedPointer>
 
 class QQuickWebEngineViewPrivate;
 
@@ -56,7 +55,7 @@ class QQuickWebEngineView : public QQuickItem {
     Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY loadingStateChanged)
 
 public:
-    QQuickWebEngineView();
+    QQuickWebEngineView(QQuickItem *parent = 0);
     ~QQuickWebEngineView();
 
     QUrl url() const;
@@ -82,8 +81,6 @@ protected:
 
 private:
     Q_DECLARE_PRIVATE(QQuickWebEngineView)
-    // Hides QObject::d_ptr allowing us to use the convenience macros.
-    QScopedPointer<QQuickWebEngineViewPrivate> d_ptr;
 };
 
 QML_DECLARE_TYPE(QQuickWebEngineView)
diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h
index 0997fe08c251523a9b1cffc73ad9f05e5f7c3921..a30c608836ceffb2ad90e23843e1d55366c98c0e 100644
--- a/lib/quick/qquickwebengineview_p_p.h
+++ b/lib/quick/qquickwebengineview_p_p.h
@@ -45,14 +45,14 @@
 #include "web_contents_adapter_client.h"
 
 #include <QScopedPointer>
+#include <QtQuick/private/qquickitem_p.h>
 
 class QQuickWebEngineView;
 class RenderWidgetHostViewQtDelegateQuick;
 class WebContentsAdapter;
 
-class QQuickWebEngineViewPrivate : public WebContentsAdapterClient
+class QQuickWebEngineViewPrivate : public QQuickItemPrivate, public WebContentsAdapterClient
 {
-    QQuickWebEngineView *q_ptr;
     Q_DECLARE_PUBLIC(QQuickWebEngineView)
 public:
     QQuickWebEngineViewPrivate();
diff --git a/lib/quick/quick.pro b/lib/quick/quick.pro
index bb6acc179e097a32e26e589e6b60ab30d01e2891..cd7172a1f2aa9ffa78374f2edf358aed787cd882 100644
--- a/lib/quick/quick.pro
+++ b/lib/quick/quick.pro
@@ -4,6 +4,7 @@ TARGETPATH = QtWebEngine
 IMPORT_VERSION = 1.0
 
 QT += qml quick
+QT_PRIVATE += qml-private v8-private quick-private gui-private core-private
 
 INCLUDEPATH += ../
 
diff --git a/lib/widgets/Api/qwebengineview.cpp b/lib/widgets/Api/qwebengineview.cpp
index a7a135fc81a61925c513ca9fdc10d78c0b1be60a..369aa6efa234d6feca8212448b1db7c7c499bcd2 100644
--- a/lib/widgets/Api/qwebengineview.cpp
+++ b/lib/widgets/Api/qwebengineview.cpp
@@ -49,19 +49,22 @@
 #include <QUrl>
 
 QWebEngineViewPrivate::QWebEngineViewPrivate()
-    : m_isLoading(false)
+    : QWidgetPrivate(QObjectPrivateVersion)
+    , m_isLoading(false)
     , adapter(new WebContentsAdapter(this))
 {
 }
 
 void QWebEngineViewPrivate::titleChanged(const QString &title)
 {
-    Q_EMIT q_ptr->titleChanged(title);
+    Q_Q(QWebEngineView);
+    Q_EMIT q->titleChanged(title);
 }
 
 void QWebEngineViewPrivate::urlChanged(const QUrl &url)
 {
-    Q_EMIT q_ptr->urlChanged(url);
+    Q_Q(QWebEngineView);
+    Q_EMIT q->urlChanged(url);
 }
 
 void QWebEngineViewPrivate::loadingStateChanged()
@@ -99,10 +102,9 @@ RenderWidgetHostViewQtDelegate *QWebEngineViewPrivate::CreateRenderWidgetHostVie
     return new RenderWidgetHostViewQtDelegateWidget;
 }
 
-QWebEngineView::QWebEngineView()
-    : d_ptr(new QWebEngineViewPrivate)
+QWebEngineView::QWebEngineView(QWidget *parent)
+    : QWidget(*(new QWebEngineViewPrivate), parent, 0)
 {
-    d_ptr->q_ptr=this;
     // This causes the child RenderWidgetHostViewQtDelegateWidgets to fill this widget.
     setLayout(new QStackedLayout);
 }
diff --git a/lib/widgets/Api/qwebengineview.h b/lib/widgets/Api/qwebengineview.h
index a86218538ce618f30ca81888c95aa13bea42be1e..b75f623695c1084dfe84f132c308b86e58edb8ae 100644
--- a/lib/widgets/Api/qwebengineview.h
+++ b/lib/widgets/Api/qwebengineview.h
@@ -45,14 +45,13 @@
 #include <qtwebenginewidgetsglobal.h>
 
 #include <QWidget>
-#include <QScopedPointer>
 
 class QWebEngineViewPrivate;
 
 class QWEBENGINEWIDGETS_EXPORT QWebEngineView : public QWidget {
     Q_OBJECT
 public:
-    QWebEngineView();
+    QWebEngineView(QWidget *parent = 0);
     ~QWebEngineView();
 
     void load(const QUrl& url);
@@ -73,7 +72,6 @@ Q_SIGNALS:
 
 private:
     Q_DECLARE_PRIVATE(QWebEngineView);
-    QScopedPointer<QWebEngineViewPrivate> d_ptr;
 };
 
 #endif // QWEBENGINEVIEW_H
diff --git a/lib/widgets/Api/qwebengineview_p.h b/lib/widgets/Api/qwebengineview_p.h
index 5c623a0978a013c3a9b861ed8ffb2d0949a9ece5..9ac5e57e8d7cab67f41122bba123f3ca9ccab385 100644
--- a/lib/widgets/Api/qwebengineview_p.h
+++ b/lib/widgets/Api/qwebengineview_p.h
@@ -45,16 +45,15 @@
 #include "web_contents_adapter_client.h"
 
 #include <QScopedPointer>
+#include <QtWidgets/private/qwidget_p.h>
 
 class QWebEngineView;
 class RenderWidgetHostViewQtDelegate;
 class WebContentsAdapter;
 
-class QWebEngineViewPrivate : public WebContentsAdapterClient
+class QWebEngineViewPrivate : public QWidgetPrivate, public WebContentsAdapterClient
 {
     Q_DECLARE_PUBLIC(QWebEngineView)
-    QWebEngineView *q_ptr;
-
 public:
     QWebEngineViewPrivate();
 
diff --git a/lib/widgets/widgets.pro b/lib/widgets/widgets.pro
index 9a5591b826bd897f8eb24a634f4645279fbfd1a8..45b71284ed70b062de50796b9b75b2c741522d96 100644
--- a/lib/widgets/widgets.pro
+++ b/lib/widgets/widgets.pro
@@ -10,6 +10,7 @@ MODULE = webenginewidgets
 DEFINES += QT_BUILD_WEBENGINEWIDGETS_LIB
 
 QT += widgets
+QT_PRIVATE += widgets-private gui-private core-private
 
 # FIXME: all this should eventually be turned into QT += webenginecore
 macx:LIBPATH = $$getOutDir()/$$getConfigDir()