diff --git a/examples/camera/camera.pro b/examples/camera/camera.pro
index caa58cb77b9158a50bf1914495c505d68def98cf..e49e03186314f493b0150e31eb610ef36f932f9a 100644
--- a/examples/camera/camera.pro
+++ b/examples/camera/camera.pro
@@ -1,7 +1,7 @@
 TEMPLATE = app
 TARGET = camera
 
-QT += multimediakit
+QT += multimediakit multimediakitwidgets
 
 HEADERS = \
     camera.h \
diff --git a/examples/player/player.pro b/examples/player/player.pro
index 687779f0fcacc47fef50e1d11af95b1350d1298a..9559b47cc5c583df416b6aabf0c48c34d36a2295 100644
--- a/examples/player/player.pro
+++ b/examples/player/player.pro
@@ -6,6 +6,7 @@ CONFIG += qt warn_on
 QT += network \
       xml \
       multimediakit \
+      multimediakitwidgets
 
 HEADERS = \
     player.h \
diff --git a/examples/slideshow/slideshow.pro b/examples/slideshow/slideshow.pro
index 017addd7a55f7a5d2041fb39431814226e6e5527..bc3c208b3fd542150b596bb310d1a268819fa0a8 100644
--- a/examples/slideshow/slideshow.pro
+++ b/examples/slideshow/slideshow.pro
@@ -1,7 +1,7 @@
 TEMPLATE = app
 TARGET = slideshow
 
-QT += multimediakit
+QT += multimediakit multimediakitwidgets
 
 HEADERS = \
     slideshow.h
diff --git a/examples/videographicsitem/videographicsitem.pro b/examples/videographicsitem/videographicsitem.pro
index 4924ab551c5d684cfd5a3d9bb4ecad6646ad3b5c..26668117a96cabd13bcb452b1e2fa851d60e55f1 100644
--- a/examples/videographicsitem/videographicsitem.pro
+++ b/examples/videographicsitem/videographicsitem.pro
@@ -1,7 +1,7 @@
 TEMPLATE = app
 TARGET = videographicsitem
 
-QT += multimediakit
+QT += multimediakit multimediakitwidgets
 
 contains(QT_CONFIG, opengl): QT += opengl
 
diff --git a/examples/videowidget/videowidget.pro b/examples/videowidget/videowidget.pro
index 40f2cc17a37e33af44332f5fc2e6840e77a74454..9874a8ef54a475a5ce80db2fd59425fab57dfe12 100644
--- a/examples/videowidget/videowidget.pro
+++ b/examples/videowidget/videowidget.pro
@@ -1,7 +1,7 @@
 TEMPLATE = app
 TARGET = videowidget
 
-QT += multimediakit
+QT += multimediakit multimediakitwidgets
 
 HEADERS = \
     videoplayer.h \
diff --git a/modules/qt_multimediakitwidgets.pri b/modules/qt_multimediakitwidgets.pri
new file mode 100644
index 0000000000000000000000000000000000000000..55faee924d2045a52d0362c6aa61adf35f075ac2
--- /dev/null
+++ b/modules/qt_multimediakitwidgets.pri
@@ -0,0 +1,17 @@
+QT.multimediakitwidgets.VERSION = 5.0.0
+QT.multimediakitwidgets.MAJOR_VERSION = 5
+QT.multimediakitwidgets.MINOR_VERSION = 0
+QT.multimediakitwidgets.PATCH_VERSION = 0
+
+QT.multimediakitwidgets.name = QtMultimediaKitWidgets
+QT.multimediakitwidgets.bins = $$QT_MODULE_BIN_BASE
+QT.multimediakitwidgets.includes = $$QT_MODULE_INCLUDE_BASE $$QT_MODULE_INCLUDE_BASE/QtMultimediaKitWidgets
+QT.multimediakitwidgets.private_includes = $$QT_MODULE_INCLUDE_BASE/QtMultimediaKitWidgets/$$QT.multimediakitwidgets.VERSION
+QT.multimediakitwidgets.sources = $$QT_MODULE_BASE/src/multimediakitwidgets
+QT.multimediakitwidgets.libs = $$QT_MODULE_LIB_BASE
+QT.multimediakitwidgets.plugins = $$QT_MODULE_PLUGIN_BASE
+QT.multimediakitwidgets.imports = $$QT_MODULE_IMPORT_BASE
+QT.multimediakitwidgets.depends = gui network
+QT.multimediakitwidgets.DEFINES = QT_MULTIMEDIAKITWIDGETS_LIB
+
+QT_CONFIG += multimediakitwidgets
diff --git a/src/multimediakit/multimediakit.pro b/src/multimediakit/multimediakit.pro
index 4cc1dbfdc970c2f55be429c78f81deca50db08bd..8246110edfd203dda9684e0b12c38ade3b84f6bc 100644
--- a/src/multimediakit/multimediakit.pro
+++ b/src/multimediakit/multimediakit.pro
@@ -28,9 +28,7 @@ PRIVATE_HEADERS += \
     qmediaplaylist_p.h \
     qmediaplaylistprovider_p.h \
     qmediaimageviewerservice_p.h \
-    qvideowidget_p.h \
     qmediapluginloader_p.h \
-    qpaintervideosurface_p.h \
     qvideosurfaceoutput_p.h
 
 PUBLIC_HEADERS += \
@@ -59,9 +57,6 @@ PUBLIC_HEADERS += \
     qradiotuner.h \
     qradiotunercontrol.h \
     qtmedianamespace.h \
-    qvideowidget.h \
-    qvideowindowcontrol.h \
-    qvideowidgetcontrol.h \
     qaudioencodercontrol.h \
     qvideoencodercontrol.h \
     qimageencodercontrol.h \
@@ -71,7 +66,6 @@ PUBLIC_HEADERS += \
     qmediaplaylistsourcecontrol.h \
     qaudioendpointselector.h \
     qvideodevicecontrol.h \
-    qgraphicsvideoitem.h \
     qvideorenderercontrol.h \
     qmediatimerange.h \
     qmedianetworkaccesscontrol.h \
@@ -102,9 +96,6 @@ SOURCES += qmediacontrol.cpp \
     qmediastreamscontrol.cpp \
     qradiotuner.cpp \
     qradiotunercontrol.cpp \
-    qvideowidget.cpp \
-    qvideowindowcontrol.cpp \
-    qvideowidgetcontrol.cpp \
     qaudioencodercontrol.cpp \
     qvideoencodercontrol.cpp \
     qimageencodercontrol.cpp \
@@ -115,7 +106,6 @@ SOURCES += qmediacontrol.cpp \
     qaudioendpointselector.cpp \
     qvideodevicecontrol.cpp \
     qmediapluginloader.cpp \
-    qpaintervideosurface.cpp \
     qvideorenderercontrol.cpp \
     qmediatimerange.cpp \
     qmedianetworkaccesscontrol.cpp \
@@ -124,7 +114,6 @@ SOURCES += qmediacontrol.cpp \
 #Camera
 PUBLIC_HEADERS += \
     qcamera.h \
-    qcameraviewfinder.h \
     qcameraimagecapture.h \
     qcameraimagecapturecontrol.h \
     qcameraexposure.h \
@@ -141,7 +130,6 @@ PUBLIC_HEADERS += \
 
 SOURCES += \
     qcamera.cpp \
-    qcameraviewfinder.cpp \
     qcameraexposure.cpp \
     qcamerafocus.cpp \
     qcameraimageprocessing.cpp \
@@ -161,29 +149,8 @@ include(video/video.pri)
 include(effects/effects.pri)
 
 mac:!qpa {
-!simulator {
-   HEADERS += qpaintervideosurface_mac_p.h
-   OBJECTIVE_SOURCES += qpaintervideosurface_mac.mm
-}
    LIBS += -framework AppKit -framework QuartzCore -framework QTKit
 }
 
-maemo6 {
-    isEqual(QT_ARCH,armv6) {
-        HEADERS += qeglimagetexturesurface_p.h
-        SOURCES += qeglimagetexturesurface.cpp
-
-        SOURCES += qgraphicsvideoitem_maemo6.cpp
-
-        LIBS += -lX11
-    } else {
-        SOURCES += qgraphicsvideoitem.cpp
-    }
-}
-
-!maemo* {
-    SOURCES += qgraphicsvideoitem.cpp
-}
-
 HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
 
diff --git a/src/multimediakit/qcamera.cpp b/src/multimediakit/qcamera.cpp
index d7fb532dbda8a6532f6dd3983de1ac974c362501..58dff9782d00409854d1199c5d15d71616770c28 100644
--- a/src/multimediakit/qcamera.cpp
+++ b/src/multimediakit/qcamera.cpp
@@ -52,8 +52,6 @@
 #include <qcameraimageprocessingcontrol.h>
 #include <qcameraimagecapturecontrol.h>
 #include <qvideodevicecontrol.h>
-#include <qvideowidget.h>
-#include <qgraphicsvideoitem.h>
 #include <qvideosurfaceoutput_p.h>
 
 QT_USE_NAMESPACE
@@ -470,6 +468,8 @@ QCameraImageProcessing *QCamera::imageProcessing() const
   The previously set viewfinder is detached.
   \since 1.1
 */
+
+// QVideoWidget is forward declared
 void QCamera::setViewfinder(QVideoWidget *viewfinder)
 {
     Q_D(QCamera);
@@ -478,7 +478,10 @@ void QCamera::setViewfinder(QVideoWidget *viewfinder)
     if (d->viewfinder)
         unbind(d->viewfinder);
 
-    d->viewfinder = viewfinder && bind(viewfinder) ? viewfinder : 0;
+    // We don't know (in this library) that QVideoWidget inherits QObject
+    QObject *viewFinderObject = reinterpret_cast<QObject*>(viewfinder);
+
+    d->viewfinder = viewFinderObject && bind(viewFinderObject) ? viewFinderObject : 0;
 }
 
 /*!
@@ -486,6 +489,7 @@ void QCamera::setViewfinder(QVideoWidget *viewfinder)
   The previously set viewfinder is detached.
   \since 1.1
 */
+// QGraphicsVideoItem is forward declared
 void QCamera::setViewfinder(QGraphicsVideoItem *viewfinder)
 {
     Q_D(QCamera);
@@ -494,7 +498,11 @@ void QCamera::setViewfinder(QGraphicsVideoItem *viewfinder)
     if (d->viewfinder)
         unbind(d->viewfinder);
 
-    d->viewfinder = viewfinder && bind(viewfinder) ? viewfinder : 0;
+    // We don't know (in this library) that QGraphicsVideoItem (multiply) inherits QObject
+    // but QObject inheritance depends on QObject coming first, so try this out.
+    QObject *viewFinderObject = reinterpret_cast<QObject*>(viewfinder);
+
+    d->viewfinder = viewFinderObject && bind(viewFinderObject) ? viewFinderObject : 0;
 }
 
 /*!
diff --git a/src/multimediakit/qmediaimageviewer.cpp b/src/multimediakit/qmediaimageviewer.cpp
index 1a5e659f1004ddc5c1649b95886e24669e84c6fc..cac508f8dfbec6fdac579aefe7ddf49c4b8d0e9a 100644
--- a/src/multimediakit/qmediaimageviewer.cpp
+++ b/src/multimediakit/qmediaimageviewer.cpp
@@ -44,12 +44,10 @@
 #include "qmediaobject_p.h"
 #include "qmediaimageviewerservice_p.h"
 
-#include <qgraphicsvideoitem.h>
 #include <qmediaplaylist.h>
 #include <qmediaplaylistsourcecontrol.h>
 #include <qmediacontent.h>
 #include <qmediaresource.h>
-#include <qvideowidget.h>
 #include <qvideosurfaceoutput_p.h>
 
 #include <QtCore/qcoreevent.h>
@@ -411,7 +409,10 @@ void QMediaImageViewer::setVideoOutput(QVideoWidget *widget)
     if (d->videoOutput)
         unbind(d->videoOutput);
 
-    d->videoOutput = bind(widget) ? widget : 0;
+    // We don't know (in this library) that QVideoWidget inherits QObject
+    QObject *widgetObject = reinterpret_cast<QObject*>(widget);
+
+    d->videoOutput = widgetObject && bind(widgetObject) ? widgetObject : 0;
 }
 
 /*!
@@ -428,7 +429,11 @@ void QMediaImageViewer::setVideoOutput(QGraphicsVideoItem *item)
     if (d->videoOutput)
         unbind(d->videoOutput);
 
-    d->videoOutput = bind(item) ? item : 0;
+    // We don't know (in this library) that QGraphicsVideoItem (multiply) inherits QObject
+    // but QObject inheritance depends on QObject coming first, so try this out.
+    QObject *itemObject = reinterpret_cast<QObject*>(item);
+
+    d->videoOutput = itemObject && bind(itemObject) ? itemObject : 0;
 }
 
 /*!
diff --git a/src/multimediakit/qmediaimageviewerservice.cpp b/src/multimediakit/qmediaimageviewerservice.cpp
index 869872c54030b2f8aac7fe90839b5163815eb6df..65de7a81bc5040ecf5d569ae21e86daffe4f291a 100644
--- a/src/multimediakit/qmediaimageviewerservice.cpp
+++ b/src/multimediakit/qmediaimageviewerservice.cpp
@@ -48,13 +48,11 @@
 #include <qmediaresource.h>
 #include <qmediaobject_p.h>
 #include <qvideorenderercontrol.h>
-#include <qvideowidgetcontrol.h>
 
 #include <QtCore/qdebug.h>
 
 #include <QtCore/qurl.h>
 #include <QtGui/qimagereader.h>
-#include <QtGui/qpainter.h>
 
 #include <QtNetwork/qnetworkaccessmanager.h>
 #include <QtNetwork/qnetworkreply.h>
diff --git a/src/multimediakit/qmediaimageviewerservice_p.h b/src/multimediakit/qmediaimageviewerservice_p.h
index 55d36c8cbf4cd51f9e49fdbff474afde4484a666..1fe4d4e24d30cbfdee99e07bb390d6a63bb7172b 100644
--- a/src/multimediakit/qmediaimageviewerservice_p.h
+++ b/src/multimediakit/qmediaimageviewerservice_p.h
@@ -57,8 +57,6 @@
 #include <qmediaservice.h>
 #include <qmediaimageviewer.h>
 #include <qvideorenderercontrol.h>
-#include <qvideowidget.h>
-#include <qvideowidgetcontrol.h>
 
 #include <QtCore/qpointer.h>
 #include <QtGui/qimage.h>
diff --git a/src/multimediakit/qmediaplayer.cpp b/src/multimediakit/qmediaplayer.cpp
index 75e414f6d9cf6d212ada47339c78fd1ef80fc17a..4e87e9c42e45455e8eea2c9f7afe365a6fe8b3ce 100644
--- a/src/multimediakit/qmediaplayer.cpp
+++ b/src/multimediakit/qmediaplayer.cpp
@@ -55,9 +55,7 @@
 #include <qmediaplaylist.h>
 #include <qmediaplaylistcontrol.h>
 #include <qmediaplaylistsourcecontrol.h>
-#include <qvideowidget.h>
 #include <qvideosurfaceoutput_p.h>
-#include <qgraphicsvideoitem.h>
 #include <qmedianetworkaccesscontrol.h>
 
 QT_BEGIN_NAMESPACE
@@ -748,7 +746,10 @@ void QMediaPlayer::setVideoOutput(QVideoWidget *output)
     if (d->videoOutput)
         unbind(d->videoOutput);
 
-    d->videoOutput = output && bind(output) ? output : 0;
+    // We don't know (in this library) that QVideoWidget inherits QObject
+    QObject *outputObject = reinterpret_cast<QObject*>(output);
+
+    d->videoOutput = outputObject && bind(outputObject) ? outputObject : 0;
 }
 
 /*!
@@ -767,7 +768,11 @@ void QMediaPlayer::setVideoOutput(QGraphicsVideoItem *output)
     if (d->videoOutput)
         unbind(d->videoOutput);
 
-    d->videoOutput = output && bind(output) ? output : 0;
+    // We don't know (in this library) that QGraphicsVideoItem (multiply) inherits QObject
+    // but QObject inheritance depends on QObject coming first, so try this out.
+    QObject *outputObject = reinterpret_cast<QObject*>(output);
+
+    d->videoOutput = outputObject && bind(outputObject) ? outputObject : 0;
 }
 
 /*!
diff --git a/src/multimediakitwidgets/multimediakitwidgets.pro b/src/multimediakitwidgets/multimediakitwidgets.pro
new file mode 100644
index 0000000000000000000000000000000000000000..5adda10d77ebcd444a75658423ba6cca69b98b5d
--- /dev/null
+++ b/src/multimediakitwidgets/multimediakitwidgets.pro
@@ -0,0 +1,68 @@
+load(qt_module)
+
+# distinct from QtMultimediaKit
+TARGET = QtMultimediaKitWidgets
+QPRO_PWD = $$PWD
+QT = core gui multimediakit-private
+
+CONFIG += module no_private_qt_headers_warning
+MODULE_PRI += ../../modules/qt_multimediakitwidgets.pri
+
+contains(QT_CONFIG, opengl) | contains(QT_CONFIG, opengles2) {
+   QT += opengl
+} else {
+   DEFINES += QT_NO_OPENGL
+}
+
+!static:DEFINES += QT_MAKEDLL
+DEFINES += QT_BUILD_MULTIMEDIAWIDGETS_LIB
+
+load(qt_module_config)
+
+PRIVATE_HEADERS += \
+    qvideowidget_p.h \
+    qpaintervideosurface_p.h \
+
+PUBLIC_HEADERS += \
+    qtmultimediakitwidgetdefs.h \
+    qtmultimediakitwidgetsversion.h \
+    qcameraviewfinder.h \
+    qgraphicsvideoitem.h \
+    qvideowidgetcontrol.h \
+    qvideowidget.h \
+    qvideowindowcontrol.h
+
+SOURCES += \
+    qcameraviewfinder.cpp \
+    qpaintervideosurface.cpp \
+    qvideowidgetcontrol.cpp \
+    qvideowidget.cpp \
+    qvideowindowcontrol.cpp \
+
+mac:!qpa {
+!simulator {
+   PRIVATE_HEADERS += qpaintervideosurface_mac_p.h
+   OBJECTIVE_SOURCES += qpaintervideosurface_mac.mm
+}
+   LIBS += -framework AppKit -framework QuartzCore -framework QTKit
+}
+
+maemo6 {
+    isEqual(QT_ARCH,armv6) {
+        PRIVATE_HEADERS += qeglimagetexturesurface_p.h
+        SOURCES += qeglimagetexturesurface.cpp
+
+        SOURCES += qgraphicsvideoitem_maemo6.cpp
+
+        LIBS += -lX11
+    } else {
+        SOURCES += qgraphicsvideoitem.cpp
+    }
+}
+
+!maemo* {
+    SOURCES += qgraphicsvideoitem.cpp
+}
+
+HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
+
diff --git a/src/multimediakit/qcameraviewfinder.cpp b/src/multimediakitwidgets/qcameraviewfinder.cpp
similarity index 98%
rename from src/multimediakit/qcameraviewfinder.cpp
rename to src/multimediakitwidgets/qcameraviewfinder.cpp
index c4df95934718fa2c52fd9f835619d2c336cd6085..42167ebb482ef92e27209f0aeb678eab42f44519 100644
--- a/src/multimediakit/qcameraviewfinder.cpp
+++ b/src/multimediakitwidgets/qcameraviewfinder.cpp
@@ -41,7 +41,7 @@
 
 #include <QDebug>
 
-#include <qmediaobject_p.h>
+#include <private/qmediaobject_p.h>
 
 #include <qcamera.h>
 #include <qcameraviewfinder.h>
diff --git a/src/multimediakit/qcameraviewfinder.h b/src/multimediakitwidgets/qcameraviewfinder.h
similarity index 100%
rename from src/multimediakit/qcameraviewfinder.h
rename to src/multimediakitwidgets/qcameraviewfinder.h
diff --git a/src/multimediakit/qeglimagetexturesurface.cpp b/src/multimediakitwidgets/qeglimagetexturesurface.cpp
similarity index 100%
rename from src/multimediakit/qeglimagetexturesurface.cpp
rename to src/multimediakitwidgets/qeglimagetexturesurface.cpp
diff --git a/src/multimediakit/qeglimagetexturesurface_p.h b/src/multimediakitwidgets/qeglimagetexturesurface_p.h
similarity index 99%
rename from src/multimediakit/qeglimagetexturesurface_p.h
rename to src/multimediakitwidgets/qeglimagetexturesurface_p.h
index d8aceb74d4f5880a793a5a3862385ce24f736abc..aa88702a6ad32311d50092f0f8f4e0e62ee2f652 100644
--- a/src/multimediakit/qeglimagetexturesurface_p.h
+++ b/src/multimediakitwidgets/qeglimagetexturesurface_p.h
@@ -53,7 +53,7 @@
 // We mean it.
 //
 
-#include <qtmultimediakitdefs.h>
+#include <qtmultimediakitwidgetdefs.h>
 #include <QtCore/qsize.h>
 #include <QtGui/qimage.h>
 #include <QtGui/qmatrix4x4.h>
diff --git a/src/multimediakit/qgraphicsvideoitem.cpp b/src/multimediakitwidgets/qgraphicsvideoitem.cpp
similarity index 100%
rename from src/multimediakit/qgraphicsvideoitem.cpp
rename to src/multimediakitwidgets/qgraphicsvideoitem.cpp
diff --git a/src/multimediakit/qgraphicsvideoitem.h b/src/multimediakitwidgets/qgraphicsvideoitem.h
similarity index 100%
rename from src/multimediakit/qgraphicsvideoitem.h
rename to src/multimediakitwidgets/qgraphicsvideoitem.h
diff --git a/src/multimediakit/qgraphicsvideoitem_maemo6.cpp b/src/multimediakitwidgets/qgraphicsvideoitem_maemo6.cpp
similarity index 100%
rename from src/multimediakit/qgraphicsvideoitem_maemo6.cpp
rename to src/multimediakitwidgets/qgraphicsvideoitem_maemo6.cpp
diff --git a/src/multimediakit/qpaintervideosurface.cpp b/src/multimediakitwidgets/qpaintervideosurface.cpp
similarity index 100%
rename from src/multimediakit/qpaintervideosurface.cpp
rename to src/multimediakitwidgets/qpaintervideosurface.cpp
diff --git a/src/multimediakit/qpaintervideosurface_mac.mm b/src/multimediakitwidgets/qpaintervideosurface_mac.mm
similarity index 100%
rename from src/multimediakit/qpaintervideosurface_mac.mm
rename to src/multimediakitwidgets/qpaintervideosurface_mac.mm
diff --git a/src/multimediakit/qpaintervideosurface_mac_p.h b/src/multimediakitwidgets/qpaintervideosurface_mac_p.h
similarity index 100%
rename from src/multimediakit/qpaintervideosurface_mac_p.h
rename to src/multimediakitwidgets/qpaintervideosurface_mac_p.h
diff --git a/src/multimediakit/qpaintervideosurface_p.h b/src/multimediakitwidgets/qpaintervideosurface_p.h
similarity index 99%
rename from src/multimediakit/qpaintervideosurface_p.h
rename to src/multimediakitwidgets/qpaintervideosurface_p.h
index 19361ed5f5124d9432fcdd026d919f6a8a330731..db6aa07e44695e0960e3876749310f824d857f87 100644
--- a/src/multimediakit/qpaintervideosurface_p.h
+++ b/src/multimediakitwidgets/qpaintervideosurface_p.h
@@ -53,7 +53,7 @@
 // We mean it.
 //
 
-#include <qtmultimediakitdefs.h>
+#include <qtmultimediakitwidgetdefs.h>
 #include <QtCore/qsize.h>
 #include <QtGui/qimage.h>
 #include <QtGui/qmatrix4x4.h>
diff --git a/src/multimediakitwidgets/qtmultimediakitwidgetdefs.h b/src/multimediakitwidgets/qtmultimediakitwidgetdefs.h
new file mode 100644
index 0000000000000000000000000000000000000000..c9d3202a82451522e01c302780009eaa6823d7f3
--- /dev/null
+++ b/src/multimediakitwidgets/qtmultimediakitwidgetdefs.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//
+//  W A R N I N G
+//  -------------
+//
+// This file is not part of the Qt API.  It exists purely as an
+// implementation detail.  This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QTMULTIMEDIAKITWIDGETS_P_H
+#define QTMULTIMEDIAKITWIDGETS_P_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(Q_OS_WIN)
+#  if defined(QT_NODLL)
+#    undef QT_MAKEDLL
+#    undef QT_DLL
+#  elif defined(QT_MAKEDLL)
+#    if defined(QT_DLL)
+#      undef QT_DLL
+#    endif
+#    if defined(QT_BUILD_MULTIMEDIA_LIB)
+#        define Q_MULTIMEDIAWIDGETS_EXPORT Q_DECL_EXPORT
+#    else
+#        define Q_MULTIMEDIAWIDGETS_EXPORT Q_DECL_IMPORT
+#    endif
+#  elif defined(QT_DLL) /* use a Qt DLL library */
+#    define Q_MULTIMEDIAWIDGETS_EXPORT Q_DECL_IMPORT
+#  endif
+#endif
+
+#if !defined(Q_MULTIMEDIAWIDGETS_EXPORT)
+#  if defined(QT_SHARED)
+#    define Q_MULTIMEDIAWIDGETS_EXPORT Q_DECL_EXPORT
+#  else
+#    define Q_MULTIMEDIAWIDGETS_EXPORT
+#  endif
+#endif
+
+#endif // QMULTIMEDIAKITWIDGETS_P_H
+
diff --git a/src/multimediakit/qvideowidget.cpp b/src/multimediakitwidgets/qvideowidget.cpp
similarity index 100%
rename from src/multimediakit/qvideowidget.cpp
rename to src/multimediakitwidgets/qvideowidget.cpp
diff --git a/src/multimediakit/qvideowidget.h b/src/multimediakitwidgets/qvideowidget.h
similarity index 99%
rename from src/multimediakit/qvideowidget.h
rename to src/multimediakitwidgets/qvideowidget.h
index 43c603ed403014f808146414de48f34795596053..4a400399c457f45885dbb6007bb007fdf6f3767b 100644
--- a/src/multimediakit/qvideowidget.h
+++ b/src/multimediakitwidgets/qvideowidget.h
@@ -44,7 +44,7 @@
 
 #include <QtGui/qwidget.h>
 
-#include <qtmultimediakitdefs.h>
+#include <qtmultimediakitwidgetdefs.h>
 #include <qmediabindableinterface.h>
 
 QT_BEGIN_NAMESPACE
diff --git a/src/multimediakit/qvideowidget_p.h b/src/multimediakitwidgets/qvideowidget_p.h
similarity index 99%
rename from src/multimediakit/qvideowidget_p.h
rename to src/multimediakitwidgets/qvideowidget_p.h
index 4676cb6b9409733c48b0ba35290d9cbbf02e228e..12687943c7c5ab82bfd080ebcdc63e00aed84021 100644
--- a/src/multimediakit/qvideowidget_p.h
+++ b/src/multimediakitwidgets/qvideowidget_p.h
@@ -53,7 +53,7 @@
 // We mean it.
 //
 
-#include <qtmultimediakitdefs.h>
+#include <qtmultimediakitwidgetdefs.h>
 #include "qvideowidget.h"
 
 #ifndef QT_NO_OPENGL
diff --git a/src/multimediakit/qvideowidgetcontrol.cpp b/src/multimediakitwidgets/qvideowidgetcontrol.cpp
similarity index 99%
rename from src/multimediakit/qvideowidgetcontrol.cpp
rename to src/multimediakitwidgets/qvideowidgetcontrol.cpp
index cd29cbd8c72333a3491699da0cee46f663b97f41..d85c64def1202f6c3b5c4e141dd0382ca628fc43 100644
--- a/src/multimediakit/qvideowidgetcontrol.cpp
+++ b/src/multimediakitwidgets/qvideowidgetcontrol.cpp
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 #include "qvideowidgetcontrol.h"
-#include "qmediacontrol_p.h"
+#include "private/qmediacontrol_p.h"
 
 QT_BEGIN_NAMESPACE
 
diff --git a/src/multimediakit/qvideowidgetcontrol.h b/src/multimediakitwidgets/qvideowidgetcontrol.h
similarity index 100%
rename from src/multimediakit/qvideowidgetcontrol.h
rename to src/multimediakitwidgets/qvideowidgetcontrol.h
diff --git a/src/multimediakit/qvideowindowcontrol.cpp b/src/multimediakitwidgets/qvideowindowcontrol.cpp
similarity index 100%
rename from src/multimediakit/qvideowindowcontrol.cpp
rename to src/multimediakitwidgets/qvideowindowcontrol.cpp
diff --git a/src/multimediakit/qvideowindowcontrol.h b/src/multimediakitwidgets/qvideowindowcontrol.h
similarity index 100%
rename from src/multimediakit/qvideowindowcontrol.h
rename to src/multimediakitwidgets/qvideowindowcontrol.h
diff --git a/src/plugins/gstreamer/gstreamer.pro b/src/plugins/gstreamer/gstreamer.pro
index 1e3340b0f029853874ddc91e44e24dd68f7d38cf..aad0961148f73fb0549b372e6567f72825f91099 100644
--- a/src/plugins/gstreamer/gstreamer.pro
+++ b/src/plugins/gstreamer/gstreamer.pro
@@ -2,7 +2,7 @@
 load(qt_module)
 
 TARGET = qgstengine
-QT += multimediakit-private network
+QT += multimediakit-private network multimediakitwidgets-private
 PLUGIN_TYPE=mediaservice
 
 load(qt_plugin)
diff --git a/src/plugins/qt7/qt7.pro b/src/plugins/qt7/qt7.pro
index a8d2b4653386203833f7bf5908232d20e1909288..5be085eb24a97d584132f61766336a73b83e996d 100644
--- a/src/plugins/qt7/qt7.pro
+++ b/src/plugins/qt7/qt7.pro
@@ -1,7 +1,7 @@
 load(qt_module)
 
 TARGET = qqt7engine
-QT += multimediakit-private network
+QT += multimediakit-private multimediakitwidgets-private network
 PLUGIN_TYPE = mediaservice
 
 load(qt_plugin)
diff --git a/src/plugins/wmf/wmf.pro b/src/plugins/wmf/wmf.pro
index 5eccc80d568a71ac5e6c096bd35fff876f962adb..0bb1743a7cfb672f6e43febaf0f365c80107e92d 100644
--- a/src/plugins/wmf/wmf.pro
+++ b/src/plugins/wmf/wmf.pro
@@ -1,7 +1,7 @@
 load(qt_module)
 
 TARGET = wmfengine
-QT += multimediakit-private network
+QT += multimediakit-private network multimediakitwidgets-private
 PLUGIN_TYPE=mediaservice
 
 load(qt_plugin)
diff --git a/src/src.pro b/src/src.pro
index 6ee33f358d9333e6f48969b5ffebea28b513aec4..cad13103eb691f2416350d61b675f4e49406a3a3 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -2,7 +2,11 @@
 TEMPLATE = subdirs
 CONFIG += ordered
 
+library_qtmmkwidgets.subdir = $$IN_PWD/multimediakitwidgets
+library_qtmmkwidgets.depends = multimediakit
+
 SUBDIRS += multimediakit
+SUBDIRS += library_qtmmkwidgets
 SUBDIRS += imports
 SUBDIRS += plugins
 
diff --git a/sync.profile b/sync.profile
index 9939e46384f86ada9ce1d3b898f97b259a405036..3249554db94e7f22e3a9139930222f4f8d17fbf3 100644
--- a/sync.profile
+++ b/sync.profile
@@ -1,5 +1,6 @@
 %modules = ( # path to module name map
     "QtMultimediaKit" => "$basedir/src/multimediakit",
+    "QtMultimediaKitWidgets" => "$basedir/src/multimediakitwidgets",
 );
 
 %moduleheaders = ( # restrict the module headers to those found in relative path
@@ -7,6 +8,7 @@
 
 %classnames = (
     "qtmultimediakitversion.h" => "QtMultimediaKitVersion",
+    "qtmultimediakitwidgetsversion.h" => "QtMultimediaKitWidgetsVersion",
 );
 
 %mastercontent = (
@@ -17,6 +19,7 @@
 
 %modulepris = (
     "QtMultimediaKit" => "$basedir/modules/qt_multimediakit.pri",
+    "QtMultimediaKitWidgets" => "$basedir/modules/qt_multimediakitwidgets.pri",
 );
 
 # Module dependencies.
diff --git a/tests/auto/qcamera/qcamera.pro b/tests/auto/qcamera/qcamera.pro
index baae9dba0d5fa8e03bc1c3d576e331619b9b6e44..db59a3877dcfd10f2ede865c03baab5662fcedb1 100644
--- a/tests/auto/qcamera/qcamera.pro
+++ b/tests/auto/qcamera/qcamera.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 include (../qmultimedia_common/mock.pri)
 include (../qmultimedia_common/mockcamera.pri)
diff --git a/tests/auto/qcamerabackend/qcamerabackend.pro b/tests/auto/qcamerabackend/qcamerabackend.pro
index 8debf4134590e6dd66012c9688399c94edef000e..07fdc3fbae922a58be8adba399e7a615a402f711 100644
--- a/tests/auto/qcamerabackend/qcamerabackend.pro
+++ b/tests/auto/qcamerabackend/qcamerabackend.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 # TARGET = tst_qcamerabackend
 
diff --git a/tests/auto/qcameraimagecapture/qcameraimagecapture.pro b/tests/auto/qcameraimagecapture/qcameraimagecapture.pro
index 94666595123487e6061b1ce54042f6eff1cac560..bdb6c070aeec320ddf08a3a070c499d03c8bee34 100644
--- a/tests/auto/qcameraimagecapture/qcameraimagecapture.pro
+++ b/tests/auto/qcameraimagecapture/qcameraimagecapture.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 SOURCES += \
     tst_qcameraimagecapture.cpp
diff --git a/tests/auto/qcameraviewfinder/qcameraviewfinder.pro b/tests/auto/qcameraviewfinder/qcameraviewfinder.pro
index 84228acb66318b20d46f520384b86842f2b75a4c..3a503ca3f55801d3feee7af1cee341efb9ac6cfd 100644
--- a/tests/auto/qcameraviewfinder/qcameraviewfinder.pro
+++ b/tests/auto/qcameraviewfinder/qcameraviewfinder.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 include (../qmultimedia_common/mock.pri)
 include (../qmultimedia_common/mockcamera.pri)
diff --git a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
index 15e58d8a50fbb56369b5d746dabe62f8128194f4..0143a5ed91372d3fa3f89ee4fb8dacfaf1c3696b 100644
--- a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
+++ b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private declarative
+QT += multimediakit-private multimediakitwidgets-private declarative
 
 # TARGET = tst_qdeclarativevideo
 # CONFIG += testcase
diff --git a/tests/auto/qgraphicsvideoitem/qgraphicsvideoitem.pro b/tests/auto/qgraphicsvideoitem/qgraphicsvideoitem.pro
index 2db21569fc826fa0531833cfcf6941f3d238817f..4f43a10b3bb6c1474e098f7682a47306ad5fbe0f 100644
--- a/tests/auto/qgraphicsvideoitem/qgraphicsvideoitem.pro
+++ b/tests/auto/qgraphicsvideoitem/qgraphicsvideoitem.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 # TARGET = tst_qgraphicsvideoitem
 # CONFIG += testcase
diff --git a/tests/auto/qmediaimageviewer/qmediaimageviewer.pro b/tests/auto/qmediaimageviewer/qmediaimageviewer.pro
index dab1d24620545dae5bc59ef11d150d6885cfde6f..5c9205f54761cc5facdc59677744128e44c6341a 100644
--- a/tests/auto/qmediaimageviewer/qmediaimageviewer.pro
+++ b/tests/auto/qmediaimageviewer/qmediaimageviewer.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private network
+QT += multimediakit-private multimediakitwidgets-private network
 
 # TARGET = tst_qmediaimageviewer
 # CONFIG += testcase
diff --git a/tests/auto/qmediaobject/qmediaobject.pro b/tests/auto/qmediaobject/qmediaobject.pro
index e33804456fb2db633cf76d764d8ba1465e33743e..43df60f15ae333968d94555be95f0ee5133d5d32 100644
--- a/tests/auto/qmediaobject/qmediaobject.pro
+++ b/tests/auto/qmediaobject/qmediaobject.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets
   
 # TARGET = tst_qmediaobject
 # CONFIG += testcase
diff --git a/tests/auto/qmediaplayer/qmediaplayer.pro b/tests/auto/qmediaplayer/qmediaplayer.pro
index 26bf81326b38c50099505327c785b94024fd4c06..cbc50e15dae988e0d0ec097cb737e9575ea4c73b 100644
--- a/tests/auto/qmediaplayer/qmediaplayer.pro
+++ b/tests/auto/qmediaplayer/qmediaplayer.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += network multimediakit-private
+QT += network multimediakit-private multimediakitwidgets-private
 
 # TARGET = tst_qmediaplayer
 # CONFIG += testcase
diff --git a/tests/auto/qmediastreamscontrol/qmediastreamscontrol.pro b/tests/auto/qmediastreamscontrol/qmediastreamscontrol.pro
index fcd8116a8097847585bdd38527c7f887d2f56860..ac2d7c5cd032914e733d21fea2f8302d18bed8d3 100644
--- a/tests/auto/qmediastreamscontrol/qmediastreamscontrol.pro
+++ b/tests/auto/qmediastreamscontrol/qmediastreamscontrol.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 SOURCES += \
         tst_qmediastreamscontrol.cpp
diff --git a/tests/auto/qpaintervideosurface/qpaintervideosurface.pro b/tests/auto/qpaintervideosurface/qpaintervideosurface.pro
index 9d14c4aeb357496fe03e74ce6c964143fef55630..8741f238670c7cb7d739836ee06dc5a793d73efb 100644
--- a/tests/auto/qpaintervideosurface/qpaintervideosurface.pro
+++ b/tests/auto/qpaintervideosurface/qpaintervideosurface.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 contains(QT_CONFIG, opengl) | contains(QT_CONFIG, opengles2) {
    QT += opengl
 } else {
diff --git a/tests/auto/qvideowidget/qvideowidget.pro b/tests/auto/qvideowidget/qvideowidget.pro
index 07fd03a0216b419947210ed82abd59081560443b..737623c2edd66bfcb69e4486bce74b801259c869 100644
--- a/tests/auto/qvideowidget/qvideowidget.pro
+++ b/tests/auto/qvideowidget/qvideowidget.pro
@@ -1,6 +1,6 @@
 load(qttest_p4)
 
-QT += multimediakit-private
+QT += multimediakit-private multimediakitwidgets-private
 
 # TARGET = tst_qvideowidget
 # CONFIG += testcase