diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml
index efa6e631b206cbf81d5879b67c1876314a32d272..0af69a0ded9569f195975f9525d68fdab5e44c1f 100644
--- a/src/controls/ScrollView.qml
+++ b/src/controls/ScrollView.qml
@@ -147,7 +147,7 @@ FocusScope {
     property Component style: Qt.createComponent(Settings.style + "/ScrollViewStyle.qml", root)
 
     /*! \internal */
-    property PaddedStyle __style: styleLoader.item
+    property Style __style: styleLoader.item
 
     activeFocusOnTab: true
 
diff --git a/src/controls/doc/qtquickcontrols.qdocconf b/src/controls/doc/qtquickcontrols.qdocconf
index c04bced2c4807ef2f30acedf4bdee562e24085f1..1f6925976b1e8dedf00194f9610a8090078c7c40 100644
--- a/src/controls/doc/qtquickcontrols.qdocconf
+++ b/src/controls/doc/qtquickcontrols.qdocconf
@@ -52,7 +52,7 @@ sources += ../../private/qstyleitem.cpp \
            ../../private/TabBar.qml \
            ../../private/Control.qml \
            ../../private/Style.qml \
-           ../../private/qquickpaddedstyle.h \
-           ../../private/qquickpaddedstyle.cpp
+           ../../private/qquickabstractstyle.h \
+           ../../private/qquickabstractstyle.cpp
 
 imagedirs += images
diff --git a/src/private/Style.qml b/src/private/Style.qml
index 990f61dd7b46c71a6b7a86c320ba94d594606558..6b4c08ef7dd471880b4c5de459eb49c4137479bc 100644
--- a/src/private/Style.qml
+++ b/src/private/Style.qml
@@ -39,6 +39,7 @@
 ****************************************************************************/
 import QtQuick 2.1
 import QtQuick.Controls 1.0
+import QtQuick.Controls.Private 1.0
 
 /*!
     \qmltype Style
@@ -46,7 +47,7 @@ import QtQuick.Controls 1.0
     \inqmlmodule QtQuick.Controls.Private 1.0
 */
 
-QtObject {
+AbstractStyle {
     /*! The control attached to this style */
     readonly property Item control: __control
 
diff --git a/src/private/plugin.cpp b/src/private/plugin.cpp
index 17bfed07fb8d9577b44dd4bc764e6ca183023bb9..e33c2d375dcf87d1222756986e32d26241c1e93e 100644
--- a/src/private/plugin.cpp
+++ b/src/private/plugin.cpp
@@ -45,7 +45,7 @@
 #include "qquicktooltip_p.h"
 #include "qquickcontrolsettings_p.h"
 #include "qquickspinboxvalidator_p.h"
-#include "qquickpaddedstyle_p.h"
+#include "qquickabstractstyle_p.h"
 
 #ifndef QT_NO_WIDGETS
 #include "qquickstyleitem_p.h"
@@ -81,7 +81,7 @@ public:
 
 void QtQuickControlsPrivatePlugin::registerTypes(const char *uri)
 {
-    qmlRegisterType<QQuickPaddedStyle>(uri, 1, 0, "PaddedStyle");
+    qmlRegisterType<QQuickAbstractStyle>(uri, 1, 0, "AbstractStyle");
     qmlRegisterType<QQuickPadding>();
     qmlRegisterType<QQuickRangeModel>(uri, 1, 0, "RangeModel");
     qmlRegisterType<QQuickWheelArea>(uri, 1, 0, "WheelArea");
diff --git a/src/private/private.pro b/src/private/private.pro
index cbb08a80a87f5f0328ad16d651faa5b02928a36c..803b703f4a9569ed1862c0a506bee52a7c69f586 100644
--- a/src/private/private.pro
+++ b/src/private/private.pro
@@ -10,7 +10,7 @@ HEADERS += \
     $$PWD/qquickrangemodel_p_p.h \
     $$PWD/qquickcontrolsettings_p.h \
     $$PWD/qquickwheelarea_p.h \
-    $$PWD/qquickpaddedstyle_p.h \
+    $$PWD/qquickabstractstyle_p.h \
     $$PWD/qquickpadding_p.h
 
 SOURCES += \
@@ -20,7 +20,7 @@ SOURCES += \
     $$PWD/qquickrangemodel.cpp \
     $$PWD/qquickcontrolsettings.cpp \
     $$PWD/qquickwheelarea.cpp \
-    $$PWD/qquickpaddedstyle.cpp
+    $$PWD/qquickabstractstyle.cpp
 
 # private qml files
 QML_FILES += \
diff --git a/src/private/qquickpaddedstyle.cpp b/src/private/qquickabstractstyle.cpp
similarity index 58%
rename from src/private/qquickpaddedstyle.cpp
rename to src/private/qquickabstractstyle.cpp
index 320a3f535426c805e8124fd64003b1fbfbaf79ed..eba57b03b2d6f717af32d34b4bf360ed68ca7a28 100644
--- a/src/private/qquickpaddedstyle.cpp
+++ b/src/private/qquickabstractstyle.cpp
@@ -39,30 +39,60 @@
 **
 ****************************************************************************/
 
-#include "qquickpaddedstyle_p.h"
-#include "qquickpadding_p.h"
+#include "qquickabstractstyle_p.h"
+
+QT_BEGIN_NAMESPACE
 
 /*!
-    \qmltype PaddedStyle
-    \instantiates QQuickPaddedStyle
+    \qmltype AbstractStyle
+    \instantiates QQuickAbstractStyle
     \qmlabstract
     \internal
 */
 
-QT_BEGIN_NAMESPACE
+/*!
+    \qmlproperty int AbstractStyle::padding.top
+    \qmlproperty int AbstractStyle::padding.left
+    \qmlproperty int AbstractStyle::padding.right
+    \qmlproperty int AbstractStyle::padding.bottom
+
+    This grouped property holds the \c top, \c left, \c right and \c bottom padding.
+*/
 
-QQuickPaddedStyle::QQuickPaddedStyle(QQuickItem *parent) :
-    QQuickItem(parent)
+QQuickAbstractStyle::QQuickAbstractStyle(QObject *parent) : QObject(parent)
 {
 }
 
-/*!
-    \qmlproperty int PaddedStyle::padding.top
-    \qmlproperty int PaddedStyle::padding.left
-    \qmlproperty int PaddedStyle::padding.right
-    \qmlproperty int PaddedStyle::padding.bottom
+QQmlListProperty<QObject> QQuickAbstractStyle::data()
+{
+    return QQmlListProperty<QObject>(this, 0, &QQuickAbstractStyle::data_append, &QQuickAbstractStyle::data_count,
+                                     &QQuickAbstractStyle::data_at, &QQuickAbstractStyle::data_clear);
+}
 
-    This grouped property holds the \c top, \c left, \c right and \c bottom padding.
-*/
+void QQuickAbstractStyle::data_append(QQmlListProperty<QObject> *list, QObject *object)
+{
+    if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object))
+        style->m_data.append(object);
+}
+
+int QQuickAbstractStyle::data_count(QQmlListProperty<QObject> *list)
+{
+    if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object))
+        return style->m_data.count();
+    return 0;
+}
+
+QObject *QQuickAbstractStyle::data_at(QQmlListProperty<QObject> *list, int index)
+{
+    if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object))
+        return style->m_data.at(index);
+    return 0;
+}
+
+void QQuickAbstractStyle::data_clear(QQmlListProperty<QObject> *list)
+{
+    if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object))
+        style->m_data.clear();
+}
 
 QT_END_NAMESPACE
diff --git a/src/private/qquickpaddedstyle_p.h b/src/private/qquickabstractstyle_p.h
similarity index 76%
rename from src/private/qquickpaddedstyle_p.h
rename to src/private/qquickabstractstyle_p.h
index 1a5a3c95d378ee20d0e363da5b067107f770ea70..137640535c5661144c723dfe42b09554079def55 100644
--- a/src/private/qquickpaddedstyle_p.h
+++ b/src/private/qquickabstractstyle_p.h
@@ -39,29 +39,40 @@
 **
 ****************************************************************************/
 
-#ifndef QQUICKPADDEDSTYLE_H
-#define QQUICKPADDEDSTYLE_H
+#ifndef QQUICKABSTRACTSTYLE_H
+#define QQUICKABSTRACTSTYLE_H
 
-#include <QtQuick/QQuickItem>
-#include <QtQml/QQmlListProperty>
+#include <QtCore/qobject.h>
+#include <QtQml/qqmllist.h>
 #include "qquickpadding_p.h"
 
 QT_BEGIN_NAMESPACE
 
-class QQuickPaddedStyle : public QQuickItem
+class QQuickAbstractStyle : public QObject
 {
     Q_OBJECT
 
     Q_PROPERTY(QQuickPadding* padding READ padding CONSTANT)
+    Q_PROPERTY(QQmlListProperty<QObject> data READ data DESIGNABLE false)
+    Q_CLASSINFO("DefaultProperty", "data")
 
 public:
-    QQuickPaddedStyle(QQuickItem *parent = 0);
+    QQuickAbstractStyle(QObject *parent = 0);
+
     QQuickPadding* padding() { return &m_padding; }
 
+    QQmlListProperty<QObject> data();
+
 private:
+    static void data_append(QQmlListProperty<QObject> *list, QObject *object);
+    static int data_count(QQmlListProperty<QObject> *list);
+    static QObject *data_at(QQmlListProperty<QObject> *list, int index);
+    static void data_clear(QQmlListProperty<QObject> *list);
+
     QQuickPadding m_padding;
+    QList<QObject *> m_data;
 };
 
 QT_END_NAMESPACE
 
-#endif // QQUICKPADDEDSTYLE_H
+#endif // QQUICKABSTRACTSTYLE_H
diff --git a/src/styles/Base/ButtonStyle.qml b/src/styles/Base/ButtonStyle.qml
index 5674c1188615bc69c1bcdaf878de94dfcbaef3bc..fe37d17088d51b7743e4462018a667c6112f4c3f 100644
--- a/src/styles/Base/ButtonStyle.qml
+++ b/src/styles/Base/ButtonStyle.qml
@@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0
     If you need a custom label, you can replace the label item.
 */
 
-PaddedStyle {
+Style {
     id: buttonstyle
 
     /*! The \l Button attached to this style. */
diff --git a/src/styles/Base/CheckBoxStyle.qml b/src/styles/Base/CheckBoxStyle.qml
index b10b285913f5eddae634936c37ce73cc29954869..4311c62944c70ebc64931f19c1bb62590794a32b 100644
--- a/src/styles/Base/CheckBoxStyle.qml
+++ b/src/styles/Base/CheckBoxStyle.qml
@@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0
     }
     \endqml
 */
-PaddedStyle {
+Style {
     id: checkboxStyle
 
     /*! The \l CheckBox attached to this style. */
diff --git a/src/styles/Base/ComboBoxStyle.qml b/src/styles/Base/ComboBoxStyle.qml
index 5643d50f03341026a65769004d1519328426b922..08382f1598d5fd613458cfd2bca66853b80fec74 100644
--- a/src/styles/Base/ComboBoxStyle.qml
+++ b/src/styles/Base/ComboBoxStyle.qml
@@ -49,7 +49,7 @@ import QtQuick.Controls.Private 1.0
     \brief Provides custom styling for ComboBox
 */
 
-PaddedStyle {
+Style {
 
     /*! \internal */
     property var __syspal: SystemPalette {
diff --git a/src/styles/Base/GroupBoxStyle.qml b/src/styles/Base/GroupBoxStyle.qml
index 86fc83fe26d2368309ebd71da8af05a58e70bf19..db0c3bf6d3a4cb631833e324fedb4aa85c97d868 100644
--- a/src/styles/Base/GroupBoxStyle.qml
+++ b/src/styles/Base/GroupBoxStyle.qml
@@ -47,7 +47,7 @@ import QtQuick.Controls.Private 1.0
     \inqmlmodule QtQuick.Controls.Styles 1.0
     \since QtQuick.Controls.Styles 1.0
 */
-PaddedStyle {
+Style {
 
     /*! \internal */
     property var __syspal: SystemPalette {
diff --git a/src/styles/Base/ProgressBarStyle.qml b/src/styles/Base/ProgressBarStyle.qml
index c93a63565fc86c1234122cf2b7c43e34b2a92b3a..eab286f09d50dd89b824c4cfeb952a051247bdd2 100644
--- a/src/styles/Base/ProgressBarStyle.qml
+++ b/src/styles/Base/ProgressBarStyle.qml
@@ -71,7 +71,7 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-PaddedStyle {
+Style {
     id: progressBarStyle
 
     /*! \internal */
diff --git a/src/styles/Base/RadioButtonStyle.qml b/src/styles/Base/RadioButtonStyle.qml
index 614a953701d6fa32b71159c6e65b998ac3aa8e75..f8fdb64721505cf1358f719787ce99f543c189cb 100644
--- a/src/styles/Base/RadioButtonStyle.qml
+++ b/src/styles/Base/RadioButtonStyle.qml
@@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-PaddedStyle {
+Style {
     id: radiobuttonStyle
 
     /*! \internal */
diff --git a/src/styles/Base/ScrollViewStyle.qml b/src/styles/Base/ScrollViewStyle.qml
index b1fe789f16bc3939e14eaf584816aca13ba68dc2..fb65fe2cc04465108d84a7fea5efce498eeab695 100644
--- a/src/styles/Base/ScrollViewStyle.qml
+++ b/src/styles/Base/ScrollViewStyle.qml
@@ -47,7 +47,7 @@ import QtQuick.Controls.Private 1.0
     \since QtQuick.Controls.Styles 1.0
     \brief Provides custom styling for ScrollView
 */
-PaddedStyle {
+Style {
     id: root
 
     /*! \internal */
diff --git a/src/styles/Base/SliderStyle.qml b/src/styles/Base/SliderStyle.qml
index 7870e2f2af67a2755593498a760aebbdfb765ae8..a17de0a1fda88de976a3c3c87bfd44907b63468c 100644
--- a/src/styles/Base/SliderStyle.qml
+++ b/src/styles/Base/SliderStyle.qml
@@ -78,7 +78,7 @@ import QtQuick.Controls.Private 1.0
     }
     \endqml
 */
-PaddedStyle {
+Style {
     id: styleitem
 
     /*! \internal */
diff --git a/src/styles/Base/SpinBoxStyle.qml b/src/styles/Base/SpinBoxStyle.qml
index 6280ea93ed8a632407f3fe9a1708c17c79746150..c239483e2feac9a1c65a1a148839495803d7d6dd 100644
--- a/src/styles/Base/SpinBoxStyle.qml
+++ b/src/styles/Base/SpinBoxStyle.qml
@@ -49,7 +49,7 @@ import QtQuick.Controls.Private 1.0
     \brief Provides custom styling for SpinBox
 */
 
-PaddedStyle {
+Style {
     id: spinboxStyle
 
     /*! The \l SpinBox attached to this style. */
diff --git a/src/styles/Base/TextFieldStyle.qml b/src/styles/Base/TextFieldStyle.qml
index 3c1a10a6906733d30d99a51e6cada29ba17c73bf..7b0ba6b2ad9930986c27391213e206106fc2881e 100644
--- a/src/styles/Base/TextFieldStyle.qml
+++ b/src/styles/Base/TextFieldStyle.qml
@@ -64,7 +64,7 @@ import QtQuick.Controls.Private 1.0
     \endqml
 */
 
-PaddedStyle {
+Style {
     id: style
 
     /*! \internal */
diff --git a/src/styles/Desktop/GroupBoxStyle.qml b/src/styles/Desktop/GroupBoxStyle.qml
index 2348e66316ac10941ad0389d89f0af25b7355e80..81d6de86f44da8a75c956e9ddec45ae7319bf4b8 100644
--- a/src/styles/Desktop/GroupBoxStyle.qml
+++ b/src/styles/Desktop/GroupBoxStyle.qml
@@ -42,7 +42,7 @@ import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 
 
-PaddedStyle {
+Style {
     readonly property GroupBox control: __control
 
     property var __style: StyleItem { id: style }
diff --git a/src/styles/Desktop/ScrollViewStyle.qml b/src/styles/Desktop/ScrollViewStyle.qml
index d504c59b6915183751ede9bfcd23ae4df33211ca..deddc354a6ea940322f02e5cfcd1372b98ac6256 100644
--- a/src/styles/Desktop/ScrollViewStyle.qml
+++ b/src/styles/Desktop/ScrollViewStyle.qml
@@ -42,7 +42,7 @@ import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 import "." as Desktop
 
-PaddedStyle {
+Style {
     id: root
 
     padding {
diff --git a/src/styles/Desktop/SliderStyle.qml b/src/styles/Desktop/SliderStyle.qml
index 1c89d21c1502febcfbe94f40c4836804c20ccf77..fbe2cfb6d8a337232697d90fe9843c6f6dfc604c 100644
--- a/src/styles/Desktop/SliderStyle.qml
+++ b/src/styles/Desktop/SliderStyle.qml
@@ -40,7 +40,7 @@
 import QtQuick 2.1
 import QtQuick.Controls.Private 1.0
 
-PaddedStyle {
+Style {
     readonly property Item control: __control
     property Component panel: StyleItem {
         elementType: "slider"
diff --git a/src/styles/Desktop/SpinBoxStyle.qml b/src/styles/Desktop/SpinBoxStyle.qml
index 59c20f5581b21bad4541236ac37bb034faea5f3e..2f05838e9675a70932715b7c85454d9492dfbc1c 100644
--- a/src/styles/Desktop/SpinBoxStyle.qml
+++ b/src/styles/Desktop/SpinBoxStyle.qml
@@ -41,7 +41,7 @@ import QtQuick 2.1
 import QtQuick.Controls 1.0
 import QtQuick.Controls.Private 1.0
 
-PaddedStyle {
+Style {
     readonly property SpinBox control: __control
 
     property var __syspal: SystemPalette {