diff --git a/examples/examples.pro b/examples/examples.pro
index e2f2c617f6a7cebc05a824c4d1b24933e7667840..3c12ee67c43bc4ac59d871ba6ea22035455e977b 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -1,2 +1,2 @@
 TEMPLATE = subdirs
-SUBDIRS +=  help designer
+SUBDIRS +=  help designer uitools
diff --git a/examples/uitools/multipleinheritance/calculatorform.cpp b/examples/uitools/multipleinheritance/calculatorform.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ae1312f558039b428c47ff5772becb6173fc86d4
--- /dev/null
+++ b/examples/uitools/multipleinheritance/calculatorform.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtWidgets>
+#include "calculatorform.h"
+
+
+//! [0]
+CalculatorForm::CalculatorForm(QWidget *parent)
+    : QWidget(parent)
+{
+    setupUi(this);
+}
+//! [0]
+
+//! [1]
+void CalculatorForm::on_inputSpinBox1_valueChanged(int value)
+{
+    outputWidget->setText(QString::number(value + inputSpinBox2->value()));
+}
+//! [1]
+
+//! [2]
+void CalculatorForm::on_inputSpinBox2_valueChanged(int value)
+{
+    outputWidget->setText(QString::number(value + inputSpinBox1->value()));
+}
+//! [2]
diff --git a/examples/uitools/multipleinheritance/calculatorform.h b/examples/uitools/multipleinheritance/calculatorform.h
new file mode 100644
index 0000000000000000000000000000000000000000..9b8c8880bf767e3cfedcb126d0f1ae25ee9b8565
--- /dev/null
+++ b/examples/uitools/multipleinheritance/calculatorform.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CALCULATORFORM_H
+#define CALCULATORFORM_H
+
+//! [0]
+#include "ui_calculatorform.h"
+//! [0]
+
+//! [1]
+class CalculatorForm : public QWidget, private Ui::CalculatorForm
+{
+    Q_OBJECT
+
+public:
+    CalculatorForm(QWidget *parent = 0);
+
+private slots:
+    void on_inputSpinBox1_valueChanged(int value);
+    void on_inputSpinBox2_valueChanged(int value);
+};
+//! [1]
+
+#endif
diff --git a/examples/uitools/multipleinheritance/calculatorform.ui b/examples/uitools/multipleinheritance/calculatorform.ui
new file mode 100644
index 0000000000000000000000000000000000000000..dda0e62ddd061e575125532a1fdf6beeddd3b348
--- /dev/null
+++ b/examples/uitools/multipleinheritance/calculatorform.ui
@@ -0,0 +1,303 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>CalculatorForm</class>
+ <widget class="QWidget" name="CalculatorForm" >
+  <property name="objectName" >
+   <string notr="true" >CalculatorForm</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>276</width>
+    <height>98</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>5</hsizetype>
+    <vsizetype>5</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Calculator Builder</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="objectName" >
+    <string notr="true" />
+   </property>
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="0" >
+    <layout class="QHBoxLayout" >
+     <property name="objectName" >
+      <string notr="true" />
+     </property>
+     <property name="margin" >
+      <number>1</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label" >
+         <property name="objectName" >
+          <string notr="true" >label</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>45</width>
+           <height>19</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Input 1</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="inputSpinBox1" >
+         <property name="objectName" >
+          <string notr="true" >inputSpinBox1</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>26</y>
+           <width>45</width>
+           <height>25</height>
+          </rect>
+         </property>
+         <property name="mouseTracking" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_3" >
+       <property name="objectName" >
+        <string notr="true" >label_3</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>54</x>
+         <y>1</y>
+         <width>7</width>
+         <height>52</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>+</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label_2" >
+         <property name="objectName" >
+          <string notr="true" >label_2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>45</width>
+           <height>19</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Input 2</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="inputSpinBox2" >
+         <property name="objectName" >
+          <string notr="true" >inputSpinBox2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>26</y>
+           <width>45</width>
+           <height>25</height>
+          </rect>
+         </property>
+         <property name="mouseTracking" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_3_2" >
+       <property name="objectName" >
+        <string notr="true" >label_3_2</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>120</x>
+         <y>1</y>
+         <width>7</width>
+         <height>52</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>=</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label_2_2_2" >
+         <property name="objectName" >
+          <string notr="true" >label_2_2_2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>37</width>
+           <height>17</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Output</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="outputWidget" >
+         <property name="objectName" >
+          <string notr="true" >outputWidget</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>24</y>
+           <width>37</width>
+           <height>27</height>
+          </rect>
+         </property>
+         <property name="frameShape" >
+          <enum>QFrame::Box</enum>
+         </property>
+         <property name="frameShadow" >
+          <enum>QFrame::Sunken</enum>
+         </property>
+         <property name="text" >
+          <string>0</string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask</set>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <spacer>
+     <property name="objectName" >
+      <string notr="true" >verticalSpacer</string>
+     </property>
+     <property name="geometry" >
+      <rect>
+       <x>85</x>
+       <y>69</y>
+       <width>20</width>
+       <height>20</height>
+      </rect>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="1" >
+    <spacer>
+     <property name="objectName" >
+      <string notr="true" >horizontalSpacer</string>
+     </property>
+     <property name="geometry" >
+      <rect>
+       <x>188</x>
+       <y>26</y>
+       <width>79</width>
+       <height>20</height>
+      </rect>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/uitools/multipleinheritance/main.cpp b/examples/uitools/multipleinheritance/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..56ba8efe53b2d6edd130be54ffa1e2449d061acb
--- /dev/null
+++ b/examples/uitools/multipleinheritance/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include "calculatorform.h"
+
+//! [0]
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+    CalculatorForm calculator;
+#if defined(Q_OS_SYMBIAN)
+    calculator.showMaximized();
+#else
+    calculator.show();
+#endif
+    return app.exec();
+}
+//! [0]
diff --git a/examples/uitools/multipleinheritance/multipleinheritance.desktop b/examples/uitools/multipleinheritance/multipleinheritance.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..7e652f972b8ce011e6c57b7bffe4db7427e2e43e
--- /dev/null
+++ b/examples/uitools/multipleinheritance/multipleinheritance.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=Multiple Inheritance
+Exec=/opt/usr/bin/multipleinheritance
+Icon=multipleinheritance
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/uitools/multipleinheritance/multipleinheritance.pro b/examples/uitools/multipleinheritance/multipleinheritance.pro
new file mode 100644
index 0000000000000000000000000000000000000000..7e6496741657ab0e9c89879bf6c5f0118879e2c9
--- /dev/null
+++ b/examples/uitools/multipleinheritance/multipleinheritance.pro
@@ -0,0 +1,19 @@
+#! [0]
+SOURCES = calculatorform.cpp main.cpp
+HEADERS	= calculatorform.h
+FORMS = calculatorform.ui
+#! [0]
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/multipleinheritance
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/multipleinheritance
+INSTALLS += target sources
+
+symbian {
+    TARGET.UID3 = 0xA000D7C1
+    CONFIG += qt_example
+}
+QT += widgets
+maemo5: CONFIG += qt_example
+
diff --git a/examples/uitools/textfinder/main.cpp b/examples/uitools/textfinder/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2fe9b715d1888a8b32b54c682c10953301500cbd
--- /dev/null
+++ b/examples/uitools/textfinder/main.cpp
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include "textfinder.h"
+
+//! [0]
+int main(int argc, char *argv[])
+{
+    Q_INIT_RESOURCE(textfinder);
+    QApplication app(argc, argv);
+
+    TextFinder *textFinder = new TextFinder;
+    textFinder->show();
+
+    return app.exec();
+}
+//! [0]
diff --git a/examples/uitools/textfinder/textfinder.cpp b/examples/uitools/textfinder/textfinder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..041c36f218a418315a1cbe0fe41ed79a07176de4
--- /dev/null
+++ b/examples/uitools/textfinder/textfinder.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtUiTools>
+#include <QtWidgets>
+#include "textfinder.h"
+
+//! [0]
+TextFinder::TextFinder(QWidget *parent)
+    : QWidget(parent)
+{
+    QWidget *formWidget = loadUiFile();
+
+//! [1]
+    ui_findButton = findChild<QPushButton*>("findButton");
+    ui_textEdit = findChild<QTextEdit*>("textEdit");
+    ui_lineEdit = findChild<QLineEdit*>("lineEdit");
+//! [0] //! [1]
+
+//! [2]
+    QMetaObject::connectSlotsByName(this);
+//! [2]
+
+//! [3a]
+    loadTextFile();
+//! [3a]
+
+//! [3b]
+    QVBoxLayout *layout = new QVBoxLayout;
+    layout->addWidget(formWidget);
+    setLayout(layout);
+//! [3b]
+
+//! [3c]
+    setWindowTitle(tr("Text Finder"));
+    isFirstTime = true;
+}
+//! [3c]
+
+//! [4]
+QWidget* TextFinder::loadUiFile()
+{
+    QUiLoader loader;
+
+    QFile file(":/forms/textfinder.ui");
+    file.open(QFile::ReadOnly);
+
+    QWidget *formWidget = loader.load(&file, this);
+    file.close();
+
+    return formWidget;
+}
+//! [4]
+
+//! [5]
+void TextFinder::loadTextFile()
+{
+    QFile inputFile(":/forms/input.txt");
+    inputFile.open(QIODevice::ReadOnly);
+    QTextStream in(&inputFile);
+    QString line = in.readAll();
+    inputFile.close();
+
+    ui_textEdit->append(line);
+    ui_textEdit->setUndoRedoEnabled(false);
+    ui_textEdit->setUndoRedoEnabled(true);
+}
+//! [5]
+
+//! [6] //! [7]
+void TextFinder::on_findButton_clicked()
+{
+    QString searchString = ui_lineEdit->text();
+    QTextDocument *document = ui_textEdit->document();
+
+    bool found = false;
+
+    if (isFirstTime == false)
+        document->undo();
+
+    if (searchString.isEmpty()) {
+        QMessageBox::information(this, tr("Empty Search Field"),
+                "The search field is empty. Please enter a word and click Find.");
+    } else {
+
+        QTextCursor highlightCursor(document);  
+        QTextCursor cursor(document);
+        
+        cursor.beginEditBlock();
+//! [6]
+
+        QTextCharFormat plainFormat(highlightCursor.charFormat());
+        QTextCharFormat colorFormat = plainFormat;
+        colorFormat.setForeground(Qt::red);
+
+        while (!highlightCursor.isNull() && !highlightCursor.atEnd()) {
+            highlightCursor = document->find(searchString, highlightCursor, QTextDocument::FindWholeWords);
+
+            if (!highlightCursor.isNull()) {
+                found = true;
+                highlightCursor.movePosition(QTextCursor::WordRight,
+                                       QTextCursor::KeepAnchor);
+                highlightCursor.mergeCharFormat(colorFormat);
+            }
+        }
+
+//! [8]
+        cursor.endEditBlock();
+//! [7] //! [9]
+        isFirstTime = false;
+
+        if (found == false) {
+            QMessageBox::information(this, tr("Word Not Found"),
+                "Sorry, the word cannot be found.");
+        }    
+    }
+}
+//! [8] //! [9]
diff --git a/examples/uitools/textfinder/textfinder.desktop b/examples/uitools/textfinder/textfinder.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..e1911cc61c49f532a293e7342f9dee644264a54e
--- /dev/null
+++ b/examples/uitools/textfinder/textfinder.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=Text Finder
+Exec=/opt/usr/bin/textfinder
+Icon=textfinder
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
diff --git a/examples/uitools/textfinder/textfinder.h b/examples/uitools/textfinder/textfinder.h
new file mode 100644
index 0000000000000000000000000000000000000000..c3cd030cb2ce7312b5a1e41b32c179f0d075ad0a
--- /dev/null
+++ b/examples/uitools/textfinder/textfinder.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TEXTFINDER_H
+#define TEXTFINDER_H
+
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+class QPushButton;
+class QTextEdit;
+class QLineEdit;
+QT_END_NAMESPACE
+
+//! [0]
+class TextFinder : public QWidget
+{
+    Q_OBJECT
+
+public:
+    TextFinder(QWidget *parent = 0);
+
+private slots:
+    void on_findButton_clicked();
+    
+private:
+    QWidget* loadUiFile();
+    void loadTextFile();
+
+    QPushButton *ui_findButton;
+    QTextEdit *ui_textEdit;
+    QLineEdit *ui_lineEdit;
+    bool isFirstTime;
+};
+//! [0]
+
+#endif
diff --git a/examples/uitools/textfinder/textfinder.pro b/examples/uitools/textfinder/textfinder.pro
new file mode 100644
index 0000000000000000000000000000000000000000..337b7216e4b61f159f996288cc23beaaedefcd03
--- /dev/null
+++ b/examples/uitools/textfinder/textfinder.pro
@@ -0,0 +1,17 @@
+CONFIG		+= uitools
+HEADERS		= textfinder.h
+RESOURCES	= textfinder.qrc
+SOURCES		= textfinder.cpp main.cpp
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/textfinder
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro forms
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/textfinder
+INSTALLS += target sources
+
+symbian: CONFIG += qt_example
+QT += widgets
+maemo5: CONFIG += qt_example
+
+symbian: warning(This example does not work on Symbian platform)
+simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/uitools/textfinder/textfinder.qrc b/examples/uitools/textfinder/textfinder.qrc
new file mode 100644
index 0000000000000000000000000000000000000000..a4cea8a77d13bd622a09d55b393f44ec401322bf
--- /dev/null
+++ b/examples/uitools/textfinder/textfinder.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>forms/textfinder.ui</file>
+    <file>forms/input.txt</file>
+</qresource>
+</RCC>
\ No newline at end of file
diff --git a/examples/uitools/uitools.pro b/examples/uitools/uitools.pro
new file mode 100644
index 0000000000000000000000000000000000000000..f17de666fbe9878988a85703ebbc12b523d44d33
--- /dev/null
+++ b/examples/uitools/uitools.pro
@@ -0,0 +1,14 @@
+TEMPLATE      = subdirs
+SUBDIRS       = multipleinheritance
+
+!wince*:!symbian:contains(QT_BUILD_PARTS, tools): SUBDIRS += textfinder
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS uitools.pro README
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools
+INSTALLS += target sources
+
+symbian: CONFIG += qt_example
+QT += widgets
+maemo5: CONFIG += qt_example
diff --git a/modules/qt_designer.pri b/modules/qt_designer.pri
index 2a2ce8a8679948c0570d56bb6749a1a0f4fc30a9..faf22047b34e53a6c5e62fdbd0e6c5e0e09c882e 100644
--- a/modules/qt_designer.pri
+++ b/modules/qt_designer.pri
@@ -11,5 +11,7 @@ QT.designer.sources = $$QT_MODULE_BASE/src/designer/src/lib
 QT.designer.libs = $$QT_MODULE_LIB_BASE
 QT.designer.plugins = $$QT_MODULE_PLUGIN_BASE
 QT.designer.imports = $$QT_MODULE_IMPORT_BASE
-QT.designer.depends = xml
+QT.designer.depends = core xml gui widgets
 QT.designer.DEFINES = QT_DESIGNER_LIB
+
+QT_CONFIG += designer
diff --git a/modules/qt_uitools.pri b/modules/qt_uitools.pri
new file mode 100644
index 0000000000000000000000000000000000000000..a0d08ccc4a658f00861e1d3a733e6e1e5b53e96d
--- /dev/null
+++ b/modules/qt_uitools.pri
@@ -0,0 +1,17 @@
+QT.uitools.VERSION = 5.0.0
+QT.uitools.MAJOR_VERSION = 5
+QT.uitools.MINOR_VERSION = 0
+QT.uitools.PATCH_VERSION = 0
+
+QT.uitools.name = QtUiTools
+QT.uitools.bins = $$QT_MODULE_BIN_BASE
+QT.uitools.includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools
+QT.uitools.private_includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools/$$QT.uitools.VERSION
+QT.uitools.sources = $$QT_MODULE_BASE/src/designer/src/uitools
+QT.uitools.libs = $$QT_MODULE_LIB_BASE
+QT.uitools.plugins = $$QT_MODULE_PLUGIN_BASE
+QT.uitools.imports = $$QT_MODULE_IMPORT_BASE
+QT.uitools.depends = xml
+QT.uitools.DEFINES = QT_UITOOLS_LIB
+
+QT_CONFIG += uitools
diff --git a/src/designer/src/lib/lib.pro b/src/designer/src/lib/lib.pro
index a23e164178c9566c6f10c0b969a89bb79a949287..7219ad57fb48160eadb7981c1f214927cce681a2 100644
--- a/src/designer/src/lib/lib.pro
+++ b/src/designer/src/lib/lib.pro
@@ -1,47 +1,30 @@
+MODULE = designer
 load(qt_module)
 
 TARGET = QtDesigner
-QT += core-private gui-private widgets widgets-private xml uilib uilib-private
+QPRO_PWD = $$PWD
+QT += core-private gui-private widgets widgets-private xml
 
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
+CONFIG += module
+MODULE_PRI = ../../../../modules/qt_designer.pri
 
-#win32|mac: CONFIG += debug_and_release
-#DESTDIR = $$QT_BUILD_TREE/lib
-#!wince*:DLLDESTDIR = $$QT.designer.bins
-
-#INCLUDEPATH += $$QT.designer.includes \
-#               $$QT.designer.private_includes \
-#               $$QT.designer.private_includes/QtDesigner
-
-#isEmpty(QT_MAJOR_VERSION) {
-#   VERSION=4.3.0
-#} else {
-#   VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
-#}
-
-unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES += QtXml
+unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES += QtXml QtCore QtGui QtWidgets
 
 load(qt_module_config)
 
 HEADERS += qtdesignerversion.h
 
-!contains(CONFIG, static) {
-    CONFIG += dll
-
-    DEFINES += \
-        QDESIGNER_SDK_LIBRARY \
-        QDESIGNER_EXTENSION_LIBRARY \
-        QDESIGNER_UILIB_LIBRARY \
-        QDESIGNER_SHARED_LIBRARY
-} else {
-    DEFINES += QT_DESIGNER_STATIC
-}
+#!contains(CONFIG, static) {
+#    CONFIG += dll
 
-##headers.pri is loaded from the last include path
-#LAST_MODULE_INCLUDE=$$INCLUDEPATH
-#for(include_path, INCLUDEPATH):LAST_MODULE_INCLUDE=$${include_path}
-#HEADERS_PRI = $$LAST_MODULE_INCLUDE/headers.pri
-#include($$HEADERS_PRI, "", true)|clear(HEADERS_PRI)
+#    DEFINES += \
+#        QDESIGNER_SDK_LIBRARY \
+#        QDESIGNER_EXTENSION_LIBRARY \
+#        QDESIGNER_UILIB_LIBRARY \
+#        QDESIGNER_SHARED_LIBRARY
+#} else {
+#    DEFINES += QT_DESIGNER_STATIC
+#}
 
 #mac frameworks
 mac:CONFIG += explicitlib
@@ -64,21 +47,8 @@ mac:!static:contains(QT_CONFIG, qt_framework) {
 include(extension/extension.pri)
 include(sdk/sdk.pri)
 include(shared/shared.pri)
+include(uilib/uilib.pri)
 PRECOMPILED_HEADER=lib_pch.h
 
 include(../sharedcomponents.pri)
 include(../components/component.pri)
-
-#target.path=$$[QT_INSTALL_LIBS]
-#INSTALLS        += target
-#win32 {
-#    dlltarget.path=$$[QT_INSTALL_BINS]
-#    INSTALLS += dlltarget
-#}
-
-
-#qt_install_headers {
-#    designer_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES
-#    designer_headers.path = $$[QT_INSTALL_HEADERS]/QtDesigner
-#    INSTALLS        += designer_headers
-#}
diff --git a/src/designer/src/lib/shared/widgetdatabase.cpp b/src/designer/src/lib/shared/widgetdatabase.cpp
index 673c7945e40373a87ffe71d0920b9a44aceb2b90..849b475b051ab6c2cd4289e7bb572b8317860e75 100644
--- a/src/designer/src/lib/shared/widgetdatabase.cpp
+++ b/src/designer/src/lib/shared/widgetdatabase.cpp
@@ -53,7 +53,7 @@
 #include <QtDesigner/QExtensionManager>
 #include <QtDesigner/QDesignerFormEditorInterface>
 
-#include <QtXml/QXmlStreamWriter>
+#include <QtCore/QXmlStreamWriter>
 
 #include <QtCore/QScopedPointer>
 #include <QtCore/qdebug.h>
diff --git a/src/designer/src/lib/uilib/abstractformbuilder.cpp b/src/designer/src/lib/uilib/abstractformbuilder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..da64a5ee27043b6cfa4a3a2110446675b4ad6cb7
--- /dev/null
+++ b/src/designer/src/lib/uilib/abstractformbuilder.cpp
@@ -0,0 +1,3154 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**sw
+****************************************************************************/
+
+#include "abstractformbuilder.h"
+#include "formbuilderextra_p.h"
+#include "resourcebuilder_p.h"
+#include "textbuilder_p.h"
+#include "ui4_p.h"
+#include "properties_p.h"
+
+#include <QtCore/QVariant>
+#include <QtCore/QMetaProperty>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QQueue>
+#include <QtCore/QHash>
+#include <QtCore/QPair>
+#include <QtCore/qdebug.h>
+#include <QtCore/QCoreApplication>
+
+#include <QtGui/QtGui>
+#include <QtWidgets/QtWidgets>
+#ifndef QFORMINTERNAL_NAMESPACE
+#  include <private/qlayout_p.h> // Compiling within Designer
+#endif
+
+#include <QtCore/QXmlStreamReader>
+
+#include <QtCore/qdebug.h>
+
+#include <limits.h>
+
+Q_DECLARE_METATYPE(QWidgetList)
+
+static const char *buttonGroupPropertyC = "buttonGroup";
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+using namespace QFormInternal;
+#endif
+
+class QFriendlyLayout: public QLayout
+{
+public:
+    inline QFriendlyLayout() { Q_ASSERT(0); }
+
+#ifdef QFORMINTERNAL_NAMESPACE
+    friend class QFormInternal::QAbstractFormBuilder;
+#else
+    friend class QAbstractFormBuilder;
+#endif
+};
+
+/*!
+    \class QAbstractFormBuilder
+
+    \brief The QAbstractFormBuilder class provides a default
+    implementation for classes that create user interfaces at
+    run-time.
+
+    \inmodule QtDesigner
+
+    QAbstractFormBuilder provides a standard interface and a default
+    implementation for constructing forms from user interface
+    files. It is not intended to be instantiated directly. Use the
+    QFormBuilder class to create user interfaces from UI files at
+    run-time. For example:
+
+    \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp 0
+
+    To override certain aspects of the form builder's behavior,
+    subclass QAbstractFormBuilder and reimplement the relevant virtual
+    functions:
+
+    \list
+    \o load() handles reading of UI format files from arbitrary
+       QIODevices, and construction of widgets from the XML data
+       that they contain.
+    \o save() handles saving of widget details in UI format to
+       arbitrary QIODevices.
+    \o workingDirectory() and setWorkingDirectory() control the
+       directory in which forms are held. The form builder looks for
+       other resources on paths relative to this directory.
+    \endlist
+
+    The QFormBuilder class is typically used by custom components and
+    applications that embed \QD. Standalone applications that need to
+    dynamically generate user interfaces at run-time use the
+    QUiLoader, found in the QtUiTools module.
+
+    \sa {QtUiTools Module}
+*/
+
+/*!
+    Constructs a new form builder.*/
+QAbstractFormBuilder::QAbstractFormBuilder() : d(new QFormBuilderExtra)
+{
+    setResourceBuilder(new QResourceBuilder());
+    setTextBuilder(new QTextBuilder());
+}
+
+/*!
+    Destroys the form builder.*/
+QAbstractFormBuilder::~QAbstractFormBuilder()
+{
+}
+
+// Return UI file version from attribute 'version="4.0"'
+static QPair<int, int> uiVersion(const QString &attr)
+{
+    const QStringList versions = attr.split(QLatin1Char('.'), QString::SkipEmptyParts);
+    if (versions.size() >= 2) {
+        bool okMajor, okMinor;
+        const int majorVersion = versions.at(0).toInt(&okMajor);
+        const int minorVersion = versions.at(1).toInt(&okMinor);
+        if (okMajor &&  okMinor)
+            return QPair<int, int>(majorVersion, minorVersion);
+    }
+    return QPair<int, int>(-1, -1);
+}
+
+static inline QString msgXmlError(const QXmlStreamReader &reader)
+{
+    return QCoreApplication::translate("QAbstractFormBuilder", "An error has occurred while reading the UI file at line %1, column %2: %3")
+                                       .arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString());
+}
+
+// Read and check the  version and the (optional) language attribute
+// of an <ui> element and leave reader positioned at <ui>.
+static bool inline readUiAttributes(QXmlStreamReader &reader, const QString &language, QString *errorMessage)
+{
+    const QString uiElement = QLatin1String("ui");
+    // Read up to first element
+    while (!reader.atEnd()) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::Invalid:
+            *errorMessage = msgXmlError(reader);
+            return false;
+        case QXmlStreamReader::StartElement:
+            if (reader.name().compare(uiElement, Qt::CaseInsensitive) == 0) {
+                const QString versionAttribute = QLatin1String("version");
+                const QString languageAttribute = QLatin1String("language");
+                const QXmlStreamAttributes attributes = reader.attributes();
+                if (attributes.hasAttribute(versionAttribute)) {
+                    const QString versionString = attributes.value(versionAttribute).toString();
+                    if (uiVersion(versionString).first < 4) {
+                        *errorMessage = QCoreApplication::translate("QAbstractFormBuilder", "This file was created using Designer from Qt-%1 and cannot be read.")
+                                .arg(versionString);
+                        return false;
+                    } // version error
+                }     // has version
+                if (attributes.hasAttribute(languageAttribute)) {
+                    // Check on optional language (Jambi)
+                    const QString formLanguage = attributes.value(languageAttribute).toString();
+                    if (!formLanguage.isEmpty() && formLanguage.compare(language, Qt::CaseInsensitive)) {
+                        *errorMessage = QCoreApplication::translate("QAbstractFormBuilder", "This file cannot be read because it was created using %1.").arg(formLanguage);
+                        return false;
+                    } // language error
+                }    // has language
+                return true;
+            }  // <ui> matched
+            break;
+        default:
+            break;
+        }
+    }
+    // No <ui> found.
+    *errorMessage = QCoreApplication::translate("QAbstractFormBuilder",  "Invalid UI file: The root element <ui> is missing.");
+    return false;
+}
+
+/*!
+    \fn QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent)
+
+    Loads an XML representation of a widget from the given \a device,
+    and constructs a new widget with the specified \a parent.
+
+    \sa save(), errorString()
+*/
+QWidget *QAbstractFormBuilder::load(QIODevice *dev, QWidget *parentWidget)
+{
+    QXmlStreamReader reader(dev);
+    d->m_errorString.clear();
+    if (!readUiAttributes(reader, d->m_language, &d->m_errorString)) {
+        uiLibWarning(d->m_errorString);
+        return false;
+    }
+    DomUI ui;
+    ui.read(reader);
+    if (reader.hasError()) {
+        d->m_errorString = msgXmlError(reader);
+        uiLibWarning(d->m_errorString);
+        return 0;
+    }
+
+    QWidget *widget = create(&ui, parentWidget);
+    if (!widget && d->m_errorString.isEmpty())
+        d->m_errorString = QCoreApplication::translate("QAbstractFormBuilder", "Invalid UI file");
+    return widget;
+}
+
+/*!
+    \internal
+*/
+QWidget *QAbstractFormBuilder::create(DomUI *ui, QWidget *parentWidget)
+{
+    typedef QFormBuilderExtra::ButtonGroupHash ButtonGroupHash;
+
+    d->clear();
+    if (const DomLayoutDefault *def = ui->elementLayoutDefault()) {
+       d->m_defaultMargin = def->hasAttributeMargin() ? def->attributeMargin() : INT_MIN;
+       d->m_defaultSpacing = def->hasAttributeSpacing() ? def->attributeSpacing() : INT_MIN;
+    }
+
+    DomWidget *ui_widget = ui->elementWidget();
+    if (!ui_widget)
+        return 0;
+
+    initialize(ui);
+
+    if (const DomButtonGroups *domButtonGroups = ui->elementButtonGroups())
+        d->registerButtonGroups(domButtonGroups);
+
+    if (QWidget *widget = create(ui_widget, parentWidget)) {
+        // Reparent button groups that were actually created to main container for them to be found in the signal/slot part
+        const ButtonGroupHash &buttonGroups = d->buttonGroups();
+        if (!buttonGroups.empty()) {
+            const ButtonGroupHash::const_iterator cend = buttonGroups.constEnd();
+            for (ButtonGroupHash::const_iterator it = buttonGroups.constBegin(); it != cend; ++it)
+                if (it.value().second)
+                    it.value().second->setParent(widget);
+        }
+        createConnections(ui->elementConnections(), widget);
+        createResources(ui->elementResources()); // maybe this should go first, before create()...
+        applyTabStops(widget, ui->elementTabStops());
+        d->applyInternalProperties();
+        reset();
+        d->clear();
+        return widget;
+    }
+    d->clear();
+    return 0;
+}
+
+/*!
+    \internal
+    Retrieve relevant information from the custom widgets section.
+    Called by create(DomUI *, QWidget *); call manually if you
+    just use create(DomWidget *, QWidget *) on some child widget of DomUI.
+ */
+
+void QAbstractFormBuilder::initialize(const DomUI *ui)
+{
+    typedef QList<DomCustomWidget*> DomCustomWidgetList;
+
+    DomCustomWidgets *domCustomWidgets  = ui->elementCustomWidgets();
+    createCustomWidgets(domCustomWidgets);
+
+    if (domCustomWidgets) {
+        const DomCustomWidgetList customWidgets = domCustomWidgets->elementCustomWidget();
+        if (!customWidgets.empty()) {
+            const DomCustomWidgetList::const_iterator cend = customWidgets.constEnd();
+            for (DomCustomWidgetList::const_iterator it = customWidgets.constBegin(); it != cend; ++it)
+                d->storeCustomWidgetData((*it)->elementClass(), *it);
+        }
+    }
+}
+
+/*!
+    \internal
+*/
+QWidget *QAbstractFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget)
+{
+    QWidget *w = createWidget(ui_widget->attributeClass(), parentWidget, ui_widget->attributeName());
+    if (!w)
+        return 0;
+
+    applyProperties(w, ui_widget->elementProperty());
+
+    foreach (DomAction *ui_action, ui_widget->elementAction()) {
+        QAction *child_action = create(ui_action, w);
+        Q_UNUSED( child_action );
+    }
+
+    foreach (DomActionGroup *ui_action_group, ui_widget->elementActionGroup()) {
+        QActionGroup *child_action_group = create(ui_action_group, w);
+        Q_UNUSED( child_action_group );
+    }
+
+    QWidgetList children;
+    foreach (DomWidget *ui_child, ui_widget->elementWidget()) {
+        if (QWidget *child  = create(ui_child, w)) {
+            children += child;
+        } else {
+            const QString className = ui_child->elementClass().empty() ? QString() : ui_child->elementClass().front();
+            uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "The creation of a widget of the class '%1' failed.").arg(className));
+        }
+    }
+
+    foreach (DomLayout *ui_lay, ui_widget->elementLayout()) {
+        QLayout *child_lay = create(ui_lay, 0, w);
+        Q_UNUSED( child_lay );
+    }
+
+    const QList<DomActionRef *> addActions = ui_widget->elementAddAction();
+    if (!addActions.empty()) {
+        const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+        foreach (DomActionRef *ui_action_ref, addActions) {
+            const QString name = ui_action_ref->attributeName();
+            if (name == strings.separator) {
+                QAction *sep = new QAction(w);
+                sep->setSeparator(true);
+                w->addAction(sep);
+                addMenuAction(sep);
+            } else if (QAction *a = d->m_actions.value(name)) {
+                w->addAction(a);
+            } else if (QActionGroup *g = d->m_actionGroups.value(name)) {
+                w->addActions(g->actions());
+            } else if (QMenu *menu = w->findChild<QMenu*>(name)) {
+                w->addAction(menu->menuAction());
+                addMenuAction(menu->menuAction());
+            }
+        }
+    }
+
+    loadExtraInfo(ui_widget, w, parentWidget);
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    QString scriptErrorMessage;
+    d->formScriptRunner().run(ui_widget,
+                                  d->customWidgetScript(ui_widget->attributeClass()),
+                                  w, children, &scriptErrorMessage);
+#endif
+    addItem(ui_widget, w, parentWidget);
+
+    if (qobject_cast<QDialog *>(w) && parentWidget)
+        w->setAttribute(Qt::WA_Moved, false); // So that QDialog::setVisible(true) will center it
+
+    const QStringList zOrderNames = ui_widget->elementZOrder();
+    if (!zOrderNames.isEmpty()) {
+        QList<QWidget *> zOrder = qvariant_cast<QWidgetList>(w->property("_q_zOrder"));
+        foreach (const QString &widgetName, zOrderNames) {
+            if (QWidget *child = w->findChild<QWidget*>(widgetName)) {
+                if (child->parentWidget() == w) {
+                    zOrder.removeAll(child);
+                    zOrder.append(child);
+                    child->raise();
+                }
+            }
+        }
+        w->setProperty("_q_zOrder", QVariant::fromValue(zOrder));
+    }
+
+    return w;
+}
+
+/*!
+    \internal
+*/
+QAction *QAbstractFormBuilder::create(DomAction *ui_action, QObject *parent)
+{
+    QAction *a = createAction(parent, ui_action->attributeName());
+    if (!a)
+        return 0;
+
+    d->m_actions.insert(ui_action->attributeName(), a);
+    applyProperties(a, ui_action->elementProperty());
+    return a;
+}
+
+/*!
+    \internal
+*/
+QActionGroup *QAbstractFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent)
+{
+    QActionGroup *a = createActionGroup(parent, ui_action_group->attributeName());
+    if (!a)
+        return 0;
+    d->m_actionGroups.insert(ui_action_group->attributeName(), a);
+    applyProperties(a, ui_action_group->elementProperty());
+
+    foreach (DomAction *ui_action, ui_action_group->elementAction()) {
+        QAction *child_action = create(ui_action, a);
+        Q_UNUSED( child_action );
+    }
+
+    foreach (DomActionGroup *g, ui_action_group->elementActionGroup()) {
+        QActionGroup *child_action_group = create(g, parent);
+        Q_UNUSED( child_action_group );
+    }
+
+    return a;
+}
+
+// figure out the toolbar area of a DOM attrib list.
+// By legacy, it is stored as an integer. As of 4.3.0, it is the enumeration value.
+Qt::ToolBarArea QAbstractFormBuilder::toolbarAreaFromDOMAttributes(const DomPropertyHash &attributes) {
+    const DomProperty *attr = attributes.value(QFormBuilderStrings::instance().toolBarAreaAttribute);
+    if (!attr)
+        return Qt::TopToolBarArea;
+    switch(attr->kind()) {
+    case DomProperty::Number:
+        return static_cast<Qt::ToolBarArea>(attr->elementNumber());
+    case DomProperty::Enum:
+        return enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::ToolBarArea>("toolBarArea",  attr->elementEnum().toLatin1());
+    default:
+        break;
+    }
+    return Qt::TopToolBarArea;
+}
+
+/*!
+    \internal
+*/
+bool QAbstractFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
+{
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute());
+
+    if (parentWidget == 0)
+        return true;
+    // Check special cases. First: Custom container
+    const QString className = QLatin1String(parentWidget->metaObject()->className());
+    const QString addPageMethod = d->customWidgetAddPageMethod(className);
+    if (!addPageMethod.isEmpty()) {
+        // If this fails ( non-existent or non-slot), use ContainerExtension in Designer, else it can't be helped
+        return QMetaObject::invokeMethod(parentWidget, addPageMethod.toUtf8().constData(), Qt::DirectConnection, Q_ARG(QWidget*, widget));
+    }
+
+    if (QMainWindow *mw = qobject_cast<QMainWindow*>(parentWidget)) {
+
+#ifndef QT_NO_MENUBAR
+        // the menubar
+        if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(widget)) {
+            mw->setMenuBar(menuBar);
+            return true;
+        }
+#endif
+
+#ifndef QT_NO_TOOLBAR
+        // apply the toolbar's attributes
+        else if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) {
+            mw->addToolBar(toolbarAreaFromDOMAttributes(attributes), toolBar);
+            // check break
+            if (const DomProperty *attr = attributes.value(strings.toolBarBreakAttribute))
+                if (attr->elementBool() == strings.trueValue)
+                    mw->insertToolBarBreak (toolBar);
+
+            return true;
+        }
+#endif
+
+#ifndef QT_NO_STATUSBAR
+        // statusBar
+        else if (QStatusBar *statusBar = qobject_cast<QStatusBar*>(widget)) {
+            mw->setStatusBar(statusBar);
+            return true;
+        }
+#endif
+
+#ifndef QT_NO_DOCKWIDGET
+        // apply the dockwidget's attributes
+        else if (QDockWidget *dockWidget = qobject_cast<QDockWidget*>(widget)) {
+            if (const DomProperty *attr = attributes.value(strings.dockWidgetAreaAttribute)) {
+                Qt::DockWidgetArea area = static_cast<Qt::DockWidgetArea>(attr->elementNumber());
+                if (!dockWidget->isAreaAllowed(area)) {
+                    if (dockWidget->isAreaAllowed(Qt::LeftDockWidgetArea))
+                        area = Qt::LeftDockWidgetArea;
+                    else if (dockWidget->isAreaAllowed(Qt::RightDockWidgetArea))
+                        area = Qt::RightDockWidgetArea;
+                    else if (dockWidget->isAreaAllowed(Qt::TopDockWidgetArea))
+                        area = Qt::TopDockWidgetArea;
+                    else if (dockWidget->isAreaAllowed(Qt::BottomDockWidgetArea))
+                        area = Qt::BottomDockWidgetArea;
+                }
+                mw->addDockWidget(area, dockWidget);
+            } else {
+                mw->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
+            }
+            return true;
+        }
+#endif
+
+        else if (! mw->centralWidget()) {
+            mw->setCentralWidget(widget);
+            return true;
+        }
+    }
+
+#ifndef QT_NO_TABWIDGET
+    else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(parentWidget)) {
+        widget->setParent(0);
+
+        const int tabIndex = tabWidget->count();
+        if (const DomProperty *titleP = attributes.value(strings.titleAttribute, 0))
+            tabWidget->addTab(widget, toString(titleP->elementString()));
+        else
+            tabWidget->addTab(widget, strings.defaultTitle);
+
+        if (DomProperty *picon = attributes.value(strings.iconAttribute)) {
+            QVariant v = resourceBuilder()->loadResource(workingDirectory(), picon);
+            QVariant nativeValue = resourceBuilder()->toNativeValue(v);
+            tabWidget->setTabIcon(tabIndex, qvariant_cast<QIcon>(nativeValue));
+        }
+
+#ifndef QT_NO_TOOLTIP
+        if (const DomProperty *ptoolTip = attributes.value(strings.toolTipAttribute)) {
+            tabWidget->setTabToolTip(tabIndex, toString(ptoolTip->elementString()));
+        }
+#endif
+
+#ifndef QT_NO_WHATSTHIS
+        if (const DomProperty *pwhatsThis = attributes.value(strings.whatsThisAttribute)) {
+            tabWidget->setTabWhatsThis(tabIndex, toString(pwhatsThis->elementString()));
+        }
+#endif
+
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_TOOLBOX
+    else if (QToolBox *toolBox = qobject_cast<QToolBox*>(parentWidget)) {
+        const int tabIndex = toolBox->count();
+        if (const DomProperty *labelP =  attributes.value(strings.labelAttribute, 0))
+            toolBox->addItem(widget, toString(labelP->elementString()));
+        else
+            toolBox->addItem(widget, strings.defaultTitle);
+
+        if (DomProperty *picon = attributes.value(strings.iconAttribute)) {
+            QVariant v = resourceBuilder()->loadResource(workingDirectory(), picon);
+            QVariant nativeValue = resourceBuilder()->toNativeValue(v);
+            toolBox->setItemIcon(tabIndex, qvariant_cast<QIcon>(nativeValue));
+        }
+
+#ifndef QT_NO_TOOLTIP
+        if (const DomProperty *ptoolTip = attributes.value(strings.toolTipAttribute)) {
+            toolBox->setItemToolTip(tabIndex, toString(ptoolTip->elementString()));
+        }
+#endif
+
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_STACKEDWIDGET
+    else if (QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(parentWidget)) {
+        stackedWidget->addWidget(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_SPLITTER
+    else if (QSplitter *splitter = qobject_cast<QSplitter*>(parentWidget)) {
+        splitter->addWidget(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_MDIAREA
+    else if (QMdiArea *mdiArea = qobject_cast<QMdiArea*>(parentWidget)) {
+        mdiArea->addSubWindow(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_WORKSPACE
+    else if (QWorkspace *ws = qobject_cast<QWorkspace*>(parentWidget)) {
+        ws->addWindow(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_DOCKWIDGET
+    else if (QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget)) {
+        dockWidget->setWidget(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_SCROLLAREA
+    else if (QScrollArea *scrollArea = qobject_cast<QScrollArea*>(parentWidget)) {
+        scrollArea->setWidget(widget);
+        return true;
+    }
+#endif
+
+#ifndef QT_NO_WIZARD
+     else if (QWizard *wizard = qobject_cast<QWizard *>(parentWidget)) {
+         QWizardPage *page = qobject_cast<QWizardPage*>(widget);
+         if (!page) {
+             uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Attempt to add child that is not of class QWizardPage to QWizard."));
+             return false;
+         }
+         wizard->addPage(page);
+         return true;
+     }
+#endif
+    return false;
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::layoutInfo(DomLayout *ui_layout, QObject *parent, int *margin, int *spacing)
+{
+    Q_UNUSED(parent)
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    const DomPropertyHash properties = propertyMap(ui_layout->elementProperty());
+
+    int mar = INT_MIN;
+    int spac = INT_MIN;
+    if (const DomProperty *p = properties.value(strings.marginProperty, 0))
+        mar = p->elementNumber();
+
+    if (const DomProperty *p = properties.value(strings.spacingProperty, 0))
+        spac = p->elementNumber();
+
+#ifdef Q_OS_MAC
+    // here we recognize UI file < 4.3 (no we don't store margin property)
+    if (mar != INT_MIN) {
+        const int defaultMargin = parent->inherits("QLayoutWidget") ? 0 : 9;
+        if (mar == defaultMargin)
+            mar = INT_MIN;
+        if (spac == 6)
+            spac = INT_MIN;
+
+        if (mar == INT_MIN || spac == INT_MIN) {
+            QList<DomProperty *> properties = ui_layout->elementProperty();
+            QMutableListIterator<DomProperty *> it(properties);
+            while (it.hasNext()) {
+                DomProperty *prop = it.next();
+                if ((mar == INT_MIN && prop->attributeName() == strings.marginProperty) ||
+                        (spac == INT_MIN && prop->attributeName() == strings.spacingProperty)) {
+                    it.remove();
+                    delete prop;
+                }
+            }
+            ui_layout->setElementProperty(properties);
+        }
+    }
+#endif
+    if (margin)
+        *margin = mar;
+    if (spacing)
+        *spacing = spac;
+}
+
+/*!
+    \internal
+*/
+QLayout *QAbstractFormBuilder::create(DomLayout *ui_layout, QLayout *parentLayout, QWidget *parentWidget)
+{
+    QObject *p = parentLayout;
+
+    if (p == 0)
+        p = parentWidget;
+
+    Q_ASSERT(p != 0);
+
+    bool tracking = false;
+
+    if (p == parentWidget && parentWidget->layout()) {
+        tracking = true;
+        p = parentWidget->layout();
+    }
+
+    QLayout *layout = createLayout(ui_layout->attributeClass(), p, ui_layout->hasAttributeName() ? ui_layout->attributeName() : QString());
+
+    if (layout == 0)
+        return 0;
+
+    if (tracking && layout->parent() == 0) {
+        QBoxLayout *box = qobject_cast<QBoxLayout*>(parentWidget->layout());
+        if (!box) {  // only QBoxLayout is supported
+            const QString widgetClass = QString::fromUtf8(parentWidget->metaObject()->className());
+            const QString layoutClass = QString::fromUtf8(parentWidget->layout()->metaObject()->className());
+            const QString msg = QCoreApplication::translate("QAbstractFormBuilder", "Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3.\n"
+                                            "This indicates an inconsistency in the ui-file.").
+                                            arg(parentWidget->objectName(), widgetClass, layoutClass);
+            uiLibWarning(msg);
+            return 0;
+        }
+        box->addLayout(layout);
+    }
+
+    int margin = INT_MIN, spacing = INT_MIN;
+    layoutInfo(ui_layout, p, &margin, &spacing);
+
+    if (margin != INT_MIN) {
+        layout->setMargin(margin);
+    } else {
+        const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+        int left, top, right, bottom;
+        left = top = right = bottom = -1;
+        layout->getContentsMargins(&left, &top, &right, &bottom);
+
+        const DomPropertyHash properties = propertyMap(ui_layout->elementProperty());
+
+        if (const DomProperty *p = properties.value(strings.leftMarginProperty, 0))
+            left = p->elementNumber();
+
+        if (const DomProperty *p = properties.value(strings.topMarginProperty, 0))
+            top = p->elementNumber();
+
+        if (const DomProperty *p = properties.value(strings.rightMarginProperty, 0))
+            right = p->elementNumber();
+
+        if (const DomProperty *p = properties.value(strings.bottomMarginProperty, 0))
+            bottom = p->elementNumber();
+
+        layout->setContentsMargins(left, top, right, bottom);
+    }
+
+    if (spacing != INT_MIN) {
+        layout->setSpacing(spacing);
+    } else {
+        QGridLayout *grid = qobject_cast<QGridLayout *>(layout);
+        if (grid) {
+            const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+            const DomPropertyHash properties = propertyMap(ui_layout->elementProperty());
+
+            if (const DomProperty *p = properties.value(strings.horizontalSpacingProperty, 0))
+                grid->setHorizontalSpacing(p->elementNumber());
+            if (const DomProperty *p = properties.value(strings.verticalSpacingProperty, 0))
+                grid->setVerticalSpacing(p->elementNumber());
+        }
+    }
+
+    applyProperties(layout, ui_layout->elementProperty());
+
+    foreach (DomLayoutItem *ui_item, ui_layout->elementItem()) {
+        if (QLayoutItem *item = create(ui_item, layout, parentWidget)) {
+            addItem(ui_item, item, layout);
+        }
+    }
+    // Check the box stretch attributes
+    if (QBoxLayout *box = qobject_cast<QBoxLayout*>(layout)) {
+        const QString boxStretch = ui_layout->attributeStretch();
+        if (!boxStretch.isEmpty())
+            QFormBuilderExtra::setBoxLayoutStretch(boxStretch, box);
+    }
+    // Check the grid stretch/minimum size attributes
+    if (QGridLayout *grid = qobject_cast<QGridLayout*>(layout)) {
+        // Stretch
+        const QString gridRowStretch = ui_layout->attributeRowStretch();
+        if (!gridRowStretch.isEmpty())
+            QFormBuilderExtra::setGridLayoutRowStretch(gridRowStretch, grid);
+        const QString gridColumnStretch = ui_layout->attributeColumnStretch();
+        if (!gridColumnStretch.isEmpty())
+            QFormBuilderExtra::setGridLayoutColumnStretch(gridColumnStretch, grid);
+        // Minimum size
+        const QString gridColumnMinimumWidth = ui_layout->attributeColumnMinimumWidth();
+        if (!gridColumnMinimumWidth.isEmpty())
+            QFormBuilderExtra::setGridLayoutColumnMinimumWidth(gridColumnMinimumWidth, grid);
+        const QString gridRowMinimumHeight = ui_layout->attributeRowMinimumHeight();
+        if (!gridRowMinimumHeight.isEmpty())
+            QFormBuilderExtra::setGridLayoutRowMinimumHeight(gridRowMinimumHeight, grid);
+    }
+    return layout;
+}
+
+#ifndef QT_NO_FORMLAYOUT
+static inline QFormLayout::ItemRole formLayoutRole(int column, int colspan)
+{
+    if (colspan > 1)
+        return QFormLayout::SpanningRole;
+    return column == 0 ? QFormLayout::LabelRole : QFormLayout::FieldRole;
+}
+#endif
+
+static inline QString alignmentValue(Qt::Alignment a)
+{
+    QString h,v;
+    switch (a & Qt::AlignHorizontal_Mask) {
+    case Qt::AlignLeft:
+        h = QLatin1String("Qt::AlignLeft");
+        break;
+    case Qt::AlignRight:
+        h = QLatin1String("Qt::AlignRight");
+        break;
+    case Qt::AlignHCenter:
+        h = QLatin1String("Qt::AlignHCenter");
+        break;
+    case Qt::AlignJustify:
+        h = QLatin1String("Qt::AlignJustify");
+        break;
+    }
+    switch (a & Qt::AlignVertical_Mask) {
+    case Qt::AlignTop:
+        v = QLatin1String("Qt::AlignTop");
+        break;
+    case Qt::AlignBottom:
+        v = QLatin1String("Qt::AlignBottom");
+        break;
+    case Qt::AlignVCenter:
+        v = QLatin1String("Qt::AlignVCenter");
+        break;
+    }
+    if (h.isEmpty() && v.isEmpty())
+        return QString();
+    if (!v.isEmpty()) {
+        if (!h.isEmpty())
+            h += QLatin1Char('|');
+        h += v;
+    }
+    return h;
+}
+
+static inline Qt::Alignment alignmentFromDom(const QString &in)
+{
+    Qt::Alignment rc = 0;
+    if (!in.isEmpty()) {
+        foreach (const QString &f, in.split(QLatin1Char('|'))) {
+            if (f == QLatin1String("Qt::AlignLeft")) {
+                rc |= Qt::AlignLeft;
+            } else if (f == QLatin1String("Qt::AlignRight")) {
+                rc |= Qt::AlignRight;
+            } else if (f == QLatin1String("Qt::AlignHCenter")) {
+                rc |= Qt::AlignHCenter;
+            } else if (f == QLatin1String("Qt::AlignJustify")) {
+                rc |= Qt::AlignJustify;
+            } else if (f == QLatin1String("Qt::AlignTop")) {
+                rc |= Qt::AlignTop;
+            } else if (f == QLatin1String("Qt::AlignBottom")) {
+                rc |= Qt::AlignBottom;
+            } else if (f == QLatin1String("Qt::AlignVCenter")) {
+                rc |= Qt::AlignVCenter;
+            }
+        }
+    }
+    return rc;
+}
+
+/*!
+    \internal
+*/
+bool QAbstractFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout)
+{
+    // Calling addChildWidget(), etc.  is required to maintain consistency of the layouts,
+    // see documentation of addItem(), which should ideally not be used.
+    if (item->widget()) {
+        static_cast<QFriendlyLayout*>(layout)->addChildWidget(item->widget());
+    } else if (item->layout()) {
+        static_cast<QFriendlyLayout*>(layout)->addChildLayout(item->layout());
+    } else if (item->spacerItem()) {
+        // nothing to do
+    } else {
+        return false;
+    }
+
+    if (QGridLayout *grid = qobject_cast<QGridLayout*>(layout)) {
+        const int rowSpan = ui_item->hasAttributeRowSpan() ? ui_item->attributeRowSpan() : 1;
+        const int colSpan = ui_item->hasAttributeColSpan() ? ui_item->attributeColSpan() : 1;
+        grid->addItem(item, ui_item->attributeRow(), ui_item->attributeColumn(),
+                        rowSpan, colSpan, item->alignment());
+        return true;
+    }
+#ifndef QT_NO_FORMLAYOUT
+    if (QFormLayout *form = qobject_cast<QFormLayout *>(layout)) {
+        const int row =  ui_item->attributeRow();
+        const int colSpan = ui_item->hasAttributeColSpan() ? ui_item->attributeColSpan() : 1;
+        form->setItem(row, formLayoutRole(ui_item->attributeColumn(), colSpan), item);
+        return true;
+    }
+
+#endif
+    layout->addItem(item);
+    return true;
+}
+
+/*!
+    \internal
+*/
+QLayoutItem *QAbstractFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget)
+{
+    switch (ui_layoutItem->kind()) {
+    case DomLayoutItem::Widget: {
+        if (QWidget *w = create(ui_layoutItem->elementWidget(), parentWidget)) {
+#ifdef QFORMINTERNAL_NAMESPACE // uilib
+            QWidgetItem *item = new QWidgetItemV2(w);
+#else                         // Within Designer: Use factory method that returns special items that refuse to shrink to 0,0
+            QWidgetItem *item = QLayoutPrivate::createWidgetItem(layout, w);
+#endif
+            item->setAlignment(alignmentFromDom(ui_layoutItem->attributeAlignment()));
+            return item;
+        }
+        qWarning() << QCoreApplication::translate("QAbstractFormBuilder", "Empty widget item in %1 '%2'.").arg(QString::fromUtf8(layout->metaObject()->className()), layout->objectName());
+        return 0;
+    }
+    case DomLayoutItem::Spacer: {
+        QSize size(0, 0);
+        QSizePolicy::Policy sizeType = QSizePolicy::Expanding;
+        bool isVspacer = false;
+
+        const DomSpacer *ui_spacer = ui_layoutItem->elementSpacer();
+
+        const QMetaEnum sizePolicy_enum  = metaEnum<QAbstractFormBuilderGadget>("sizeType");
+        const QMetaEnum orientation_enum =  metaEnum<QAbstractFormBuilderGadget>("orientation");
+
+        const QList<DomProperty *> spacerProperties =  ui_spacer->elementProperty();
+        if (!spacerProperties.empty()) {
+            const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+            foreach (DomProperty *p, spacerProperties) {
+                const QVariant v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p); // ### remove me
+                if (v.isNull())
+                    continue;
+                if (p->attributeName() == strings.sizeHintProperty && p->kind() == DomProperty::Size) {
+                    size = v.toSize();  // ###  remove me
+                } else if (p->attributeName() == strings.sizeTypeProperty && p->kind() == DomProperty::Enum) {
+                    sizeType = static_cast<QSizePolicy::Policy>(v.toInt());
+                } else if (p->attributeName() == strings.orientationProperty && p->kind() == DomProperty::Enum) {
+                    const Qt::Orientation o = static_cast<Qt::Orientation>(v.toInt());
+                    isVspacer = (o == Qt::Vertical);
+                }
+            }
+        }
+
+        QSpacerItem *spacer = 0;
+        if (isVspacer)
+            spacer = new QSpacerItem(size.width(), size.height(), QSizePolicy::Minimum, sizeType);
+        else
+            spacer = new QSpacerItem(size.width(), size.height(), sizeType, QSizePolicy::Minimum);
+        return spacer; }
+
+    case DomLayoutItem::Layout:
+        return create(ui_layoutItem->elementLayout(), layout, parentWidget);
+
+    default:
+        break;
+    }
+
+    return 0;
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties)
+{
+    typedef QList<DomProperty*> DomPropertyList;
+
+    if (properties.empty())
+        return;
+
+    const DomPropertyList::const_iterator cend = properties.constEnd();
+    for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) {
+        const QVariant v = toVariant(o->metaObject(), *it);
+        if (!v.isNull()) {
+            const  QString attributeName = (*it)->attributeName();
+            if (!d->applyPropertyInternally(o, attributeName, v))
+                o->setProperty(attributeName.toUtf8(), v);
+        }
+    }
+}
+
+
+/*!
+    \internal
+    Check whether a property is applied internally by QAbstractFormBuilder. Call this
+   from overwritten applyProperties().
+*/
+
+bool QAbstractFormBuilder::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value)
+{
+    return d->applyPropertyInternally(o,propertyName, value);
+}
+
+/*!
+    \internal
+*/
+
+QVariant QAbstractFormBuilder::toVariant(const QMetaObject *meta, DomProperty *p)
+{
+    return domPropertyToVariant(this, meta, p);
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup,
+            DomColorGroup *group)
+{
+    // old format
+    const QList<DomColor*> colors = group->elementColor();
+    for (int role = 0; role < colors.size(); ++role) {
+        const DomColor *color = colors.at(role);
+        const QColor c(color->elementRed(), color->elementGreen(), color->elementBlue());
+        palette.setColor(colorGroup, QPalette::ColorRole(role), c);
+    }
+
+    // new format
+    const QMetaEnum colorRole_enum = metaEnum<QAbstractFormBuilderGadget>("colorRole");
+
+    const QList<DomColorRole*> colorRoles = group->elementColorRole();
+    for (int role = 0; role < colorRoles.size(); ++role) {
+        const DomColorRole *colorRole = colorRoles.at(role);
+
+        if (colorRole->hasAttributeRole()) {
+            const int r = colorRole_enum.keyToValue(colorRole->attributeRole().toLatin1());
+            if (r != -1) {
+                const QBrush br = setupBrush(colorRole->elementBrush());
+                palette.setBrush(colorGroup, static_cast<QPalette::ColorRole>(r), br);
+            }
+        }
+    }
+}
+
+/*!
+    \internal
+*/
+DomColorGroup *QAbstractFormBuilder::saveColorGroup(const QPalette &palette)
+{
+
+    const QMetaEnum colorRole_enum = metaEnum<QAbstractFormBuilderGadget>("colorRole");
+
+    DomColorGroup *group = new DomColorGroup();
+    QList<DomColorRole*> colorRoles;
+
+    const uint mask = palette.resolve();
+    for (int role = QPalette::WindowText; role < QPalette::NColorRoles; ++role) {
+        if (mask & (1 << role)) {
+            QBrush br = palette.brush(QPalette::ColorRole(role));
+
+            DomColorRole *colorRole = new DomColorRole();
+            colorRole->setElementBrush(saveBrush(br));
+            colorRole->setAttributeRole(QLatin1String(colorRole_enum.valueToKey(role)));
+            colorRoles.append(colorRole);
+        }
+    }
+
+    group->setElementColorRole(colorRoles);
+    return group;
+}
+
+/*!
+    \internal
+*/
+QBrush QAbstractFormBuilder::setupBrush(DomBrush *brush)
+{
+    QBrush br;
+    if (!brush->hasAttributeBrushStyle())
+        return br;
+
+    const Qt::BrushStyle style = enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::BrushStyle>("brushStyle", brush->attributeBrushStyle().toLatin1());
+
+    if (style == Qt::LinearGradientPattern ||
+            style == Qt::RadialGradientPattern ||
+            style == Qt::ConicalGradientPattern) {
+        const QMetaEnum gradientType_enum = metaEnum<QAbstractFormBuilderGadget>("gradientType");
+        const QMetaEnum gradientSpread_enum = metaEnum<QAbstractFormBuilderGadget>("gradientSpread");
+        const QMetaEnum gradientCoordinate_enum = metaEnum<QAbstractFormBuilderGadget>("gradientCoordinate");
+
+        const DomGradient *gradient = brush->elementGradient();
+        const QGradient::Type type = enumKeyToValue<QGradient::Type>(gradientType_enum, gradient->attributeType().toLatin1());
+
+
+        QGradient *gr = 0;
+
+        if (type == QGradient::LinearGradient) {
+            gr = new QLinearGradient(QPointF(gradient->attributeStartX(), gradient->attributeStartY()),
+                            QPointF(gradient->attributeEndX(), gradient->attributeEndY()));
+        } else if (type == QGradient::RadialGradient) {
+            gr = new QRadialGradient(QPointF(gradient->attributeCentralX(), gradient->attributeCentralY()),
+                            gradient->attributeRadius(),
+                            QPointF(gradient->attributeFocalX(), gradient->attributeFocalY()));
+        } else if (type == QGradient::ConicalGradient) {
+            gr = new QConicalGradient(QPointF(gradient->attributeCentralX(), gradient->attributeCentralY()),
+                            gradient->attributeAngle());
+        }
+        if (!gr)
+            return br;
+
+        const QGradient::Spread spread = enumKeyToValue<QGradient::Spread>(gradientSpread_enum, gradient->attributeSpread().toLatin1());
+        gr->setSpread(spread);
+
+        const QGradient::CoordinateMode coord = enumKeyToValue<QGradient::CoordinateMode>(gradientCoordinate_enum, gradient->attributeCoordinateMode().toLatin1());
+        gr->setCoordinateMode(coord);
+
+        const QList<DomGradientStop *> stops = gradient->elementGradientStop();
+        QListIterator<DomGradientStop *> it(stops);
+        while (it.hasNext()) {
+            const DomGradientStop *stop = it.next();
+            const DomColor *color = stop->elementColor();
+            gr->setColorAt(stop->attributePosition(), QColor::fromRgb(color->elementRed(),
+                            color->elementGreen(), color->elementBlue(), color->attributeAlpha()));
+        }
+        br = QBrush(*gr);
+        delete gr;
+    } else if (style == Qt::TexturePattern) {
+        const DomProperty *texture = brush->elementTexture();
+        if (texture && texture->kind() == DomProperty::Pixmap) {
+            br.setTexture(domPropertyToPixmap(texture));
+        }
+    } else {
+        const DomColor *color = brush->elementColor();
+        br.setColor(QColor::fromRgb(color->elementRed(),
+                            color->elementGreen(), color->elementBlue(), color->attributeAlpha()));
+        br.setStyle((Qt::BrushStyle)style);
+    }
+    return br;
+}
+
+/*!
+    \internal
+*/
+DomBrush *QAbstractFormBuilder::saveBrush(const QBrush &br)
+{
+    const QMetaEnum brushStyle_enum = metaEnum<QAbstractFormBuilderGadget>("brushStyle");
+
+    DomBrush *brush = new DomBrush();
+    const Qt::BrushStyle style = br.style();
+    brush->setAttributeBrushStyle(QLatin1String(brushStyle_enum.valueToKey(style)));
+    if (style == Qt::LinearGradientPattern ||
+                style == Qt::RadialGradientPattern ||
+                style == Qt::ConicalGradientPattern) {
+        const QMetaEnum gradientType_enum = metaEnum<QAbstractFormBuilderGadget>("gradientType");
+        const QMetaEnum gradientSpread_enum = metaEnum<QAbstractFormBuilderGadget>("gradientSpread");
+        const QMetaEnum gradientCoordinate_enum = metaEnum<QAbstractFormBuilderGadget>("gradientCoordinate");
+
+        DomGradient *gradient = new DomGradient();
+        const QGradient *gr = br.gradient();
+        const QGradient::Type type = gr->type();
+        gradient->setAttributeType(QLatin1String(gradientType_enum.valueToKey(type)));
+        gradient->setAttributeSpread(QLatin1String(gradientSpread_enum.valueToKey(gr->spread())));
+        gradient->setAttributeCoordinateMode(QLatin1String(gradientCoordinate_enum.valueToKey(gr->coordinateMode())));
+        QList<DomGradientStop *> stops;
+        QGradientStops st = gr->stops();
+        QVectorIterator<QPair<qreal, QColor> > it(st);
+        while (it.hasNext()) {
+            const QPair<qreal, QColor> pair = it.next();
+            DomGradientStop *stop = new DomGradientStop();
+            stop->setAttributePosition(pair.first);
+            DomColor *color = new DomColor();
+            color->setElementRed(pair.second.red());
+            color->setElementGreen(pair.second.green());
+            color->setElementBlue(pair.second.blue());
+            color->setAttributeAlpha(pair.second.alpha());
+            stop->setElementColor(color);
+            stops.append(stop);
+        }
+        gradient->setElementGradientStop(stops);
+        if (type == QGradient::LinearGradient) {
+            QLinearGradient *lgr = (QLinearGradient *)(gr);
+            gradient->setAttributeStartX(lgr->start().x());
+            gradient->setAttributeStartY(lgr->start().y());
+            gradient->setAttributeEndX(lgr->finalStop().x());
+            gradient->setAttributeEndY(lgr->finalStop().y());
+        } else if (type == QGradient::RadialGradient) {
+            QRadialGradient *rgr = (QRadialGradient *)(gr);
+            gradient->setAttributeCentralX(rgr->center().x());
+            gradient->setAttributeCentralY(rgr->center().y());
+            gradient->setAttributeFocalX(rgr->focalPoint().x());
+            gradient->setAttributeFocalY(rgr->focalPoint().y());
+            gradient->setAttributeRadius(rgr->radius());
+        } else if (type == QGradient::ConicalGradient) {
+            QConicalGradient *cgr = (QConicalGradient *)(gr);
+            gradient->setAttributeCentralX(cgr->center().x());
+            gradient->setAttributeCentralY(cgr->center().y());
+            gradient->setAttributeAngle(cgr->angle());
+        }
+
+        brush->setElementGradient(gradient);
+    } else if (style == Qt::TexturePattern) {
+        const QPixmap pixmap = br.texture();
+        if (!pixmap.isNull()) {
+            DomProperty *p = new DomProperty;
+            setPixmapProperty(*p,  pixmapPaths(pixmap));
+            brush->setElementTexture(p);
+        }
+    } else {
+        QColor c = br.color();
+        DomColor *color = new DomColor();
+        color->setElementRed(c.red());
+        color->setElementGreen(c.green());
+        color->setElementBlue(c.blue());
+        color->setAttributeAlpha(c.alpha());
+        brush->setElementColor(color);
+    }
+    return brush;
+}
+
+/*!
+    \internal
+*/
+QWidget *QAbstractFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name)
+{
+    Q_UNUSED(widgetName);
+    Q_UNUSED(parentWidget);
+    Q_UNUSED(name);
+    return 0;
+}
+
+/*!
+    \internal
+*/
+QLayout *QAbstractFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name)
+{
+    Q_UNUSED(layoutName);
+    Q_UNUSED(parent);
+    Q_UNUSED(name);
+    return 0;
+}
+
+/*!
+    \internal
+*/
+QAction *QAbstractFormBuilder::createAction(QObject *parent, const QString &name)
+{
+    QAction *action = new QAction(parent);
+    action->setObjectName(name);
+    return action;
+}
+
+/*!
+    \internal
+*/
+QActionGroup *QAbstractFormBuilder::createActionGroup(QObject *parent, const QString &name)
+{
+    QActionGroup *g = new QActionGroup(parent);
+    g->setObjectName(name);
+    return g;
+}
+
+/*!
+    \fn void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget)
+
+    Saves an XML representation of the given \a widget to the
+    specified \a device in the standard UI file format.
+
+    \sa load()*/
+void QAbstractFormBuilder::save(QIODevice *dev, QWidget *widget)
+{
+    DomWidget *ui_widget = createDom(widget, 0);
+    Q_ASSERT( ui_widget != 0 );
+
+    DomUI *ui = new DomUI();
+    ui->setAttributeVersion(QLatin1String("4.0"));
+    ui->setElementWidget(ui_widget);
+
+    saveDom(ui, widget);
+
+    QXmlStreamWriter writer(dev);
+    writer.setAutoFormatting(true);
+    writer.setAutoFormattingIndent(1);
+    writer.writeStartDocument();
+    ui->write(writer);
+    writer.writeEndDocument();
+
+    d->m_laidout.clear();
+
+    delete ui;
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveDom(DomUI *ui, QWidget *widget)
+{
+    ui->setElementClass(widget->objectName());
+
+    if (DomConnections *ui_connections = saveConnections()) {
+        ui->setElementConnections(ui_connections);
+    }
+
+    if (DomCustomWidgets *ui_customWidgets = saveCustomWidgets()) {
+        ui->setElementCustomWidgets(ui_customWidgets);
+    }
+
+    if (DomTabStops *ui_tabStops = saveTabStops()) {
+        ui->setElementTabStops(ui_tabStops);
+    }
+
+    if (DomResources *ui_resources = saveResources()) {
+        ui->setElementResources(ui_resources);
+    }
+    if (DomButtonGroups *ui_buttonGroups = saveButtonGroups(widget))
+        ui->setElementButtonGroups(ui_buttonGroups);
+}
+
+/*!
+    \internal
+*/
+DomConnections *QAbstractFormBuilder::saveConnections()
+{
+    return new DomConnections;
+}
+
+/*!
+    \internal
+*/
+
+DomWidget *QAbstractFormBuilder::createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive)
+{
+    DomWidget *ui_widget = new DomWidget();
+    ui_widget->setAttributeClass(QLatin1String(widget->metaObject()->className()));
+    ui_widget->setElementProperty(computeProperties(widget));
+
+    if (recursive) {
+        if (QLayout *layout = widget->layout()) {
+            if (DomLayout *ui_layout = createDom(layout, 0, ui_parentWidget)) {
+                QList<DomLayout*> ui_layouts;
+                ui_layouts.append(ui_layout);
+
+                ui_widget->setElementLayout(ui_layouts);
+            }
+        }
+    }
+
+    // widgets, actions and action groups
+    QList<DomWidget*> ui_widgets;
+    QList<DomAction*> ui_actions;
+    QList<DomActionGroup*> ui_action_groups;
+
+    QList<QObject*> children;
+
+    // splitters need to store their children in the order specified by child indexes,
+    // not the order of the child list.
+#ifndef QT_NO_SPLITTER
+    if (const QSplitter *splitter = qobject_cast<const QSplitter*>(widget)) {
+        const int count = splitter->count();
+        for (int i = 0; i < count; ++i)
+            children.append(splitter->widget(i));
+    } else
+#endif
+    {
+        QList<QObject *> childObjects = widget->children();
+
+        const QList<QWidget *> list = qvariant_cast<QWidgetList>(widget->property("_q_widgetOrder"));
+        foreach (QWidget *w, list) {
+            if (childObjects.contains(w)) {
+                children.append(w);
+                childObjects.removeAll(w);
+            }
+        }
+        children += childObjects;
+
+        const QList<QWidget *> zOrder = qvariant_cast<QWidgetList>(widget->property("_q_zOrder"));
+        if (list != zOrder) {
+            QStringList zOrderList;
+            QListIterator<QWidget* > itZOrder(zOrder);
+            while (itZOrder.hasNext())
+                zOrderList.append(itZOrder.next()->objectName());
+            ui_widget->setElementZOrder(zOrderList);
+        }
+    }
+
+    foreach (QObject *obj, children) {
+        if (QWidget *childWidget = qobject_cast<QWidget*>(obj)) {
+            if (d->m_laidout.contains(childWidget) || recursive == false)
+                continue;
+
+            if (QMenu *menu = qobject_cast<QMenu *>(childWidget)) {
+                QList<QAction *> actions = menu->parentWidget()->actions();
+                QListIterator<QAction *> it(actions);
+                bool found = false;
+                while (it.hasNext()) {
+                    if (it.next()->menu() == menu)
+                        found = true;
+                }
+                if (!found)
+                    continue;
+            }
+
+            if (DomWidget *ui_child = createDom(childWidget, ui_widget)) {
+                ui_widgets.append(ui_child);
+            }
+        } else if (QAction *childAction = qobject_cast<QAction*>(obj)) {
+            if (childAction->actionGroup() != 0) {
+                // it will be added later.
+                continue;
+            }
+
+            if (DomAction *ui_action = createDom(childAction)) {
+                ui_actions.append(ui_action);
+            }
+        } else if (QActionGroup *childActionGroup = qobject_cast<QActionGroup*>(obj)) {
+            if (DomActionGroup *ui_action_group = createDom(childActionGroup)) {
+                ui_action_groups.append(ui_action_group);
+            }
+        }
+    }
+
+    // add-action
+    QList<DomActionRef*> ui_action_refs;
+    foreach (QAction *action, widget->actions()) {
+        if (DomActionRef *ui_action_ref = createActionRefDom(action)) {
+            ui_action_refs.append(ui_action_ref);
+        }
+    }
+
+    if (recursive)
+        ui_widget->setElementWidget(ui_widgets);
+
+    ui_widget->setElementAction(ui_actions);
+    ui_widget->setElementActionGroup(ui_action_groups);
+    ui_widget->setElementAddAction(ui_action_refs);
+
+    saveExtraInfo(widget, ui_widget, ui_parentWidget);
+
+    return ui_widget;
+}
+
+/*!
+    \internal
+*/
+DomActionRef *QAbstractFormBuilder::createActionRefDom(QAction *action)
+{
+    QString name = action->objectName();
+
+    if (action->menu() != 0)
+        name = action->menu()->objectName();
+
+    DomActionRef *ui_action_ref = new DomActionRef();
+    if (action->isSeparator())
+        ui_action_ref->setAttributeName(QFormBuilderStrings::instance().separator);
+    else
+        ui_action_ref->setAttributeName(name);
+
+    return ui_action_ref;
+}
+
+// Struct to store layout item parameters for saving layout items
+struct FormBuilderSaveLayoutEntry {
+    explicit FormBuilderSaveLayoutEntry(QLayoutItem *li = 0) :
+        item(li), row(-1), column(-1), rowSpan(0), columnSpan(0), alignment(0) {}
+
+    QLayoutItem *item;
+    int row;
+    int column;
+    int rowSpan;
+    int columnSpan;
+    Qt::Alignment alignment;
+};
+
+// Create list from standard box layout
+static QList<FormBuilderSaveLayoutEntry> saveLayoutEntries(const QLayout *layout)
+{
+    QList<FormBuilderSaveLayoutEntry> rc;
+    if (const int count = layout->count()) {
+        rc.reserve(count);
+        for (int idx = 0; idx < count; ++idx) {
+            QLayoutItem *item = layout->itemAt(idx);
+            FormBuilderSaveLayoutEntry entry(item);
+            entry.alignment = item->alignment();
+            rc.append(entry);
+        }
+    }
+    return rc;
+}
+
+// Create list from grid layout
+static QList<FormBuilderSaveLayoutEntry> saveGridLayoutEntries(QGridLayout *gridLayout)
+{
+    QList<FormBuilderSaveLayoutEntry> rc;
+    if (const int count = gridLayout->count()) {
+        rc.reserve(count);
+        for (int idx = 0; idx < count; ++idx) {
+            QLayoutItem *item = gridLayout->itemAt(idx);
+            FormBuilderSaveLayoutEntry entry(item);
+            gridLayout->getItemPosition(idx, &entry.row, &entry.column, &entry.rowSpan,&entry.columnSpan);
+            entry.alignment = item->alignment();
+            rc.append(entry);
+        }
+    }
+    return rc;
+}
+
+#ifndef QT_NO_FORMLAYOUT
+// Create list from form layout
+static QList<FormBuilderSaveLayoutEntry> saveFormLayoutEntries(const QFormLayout *formLayout)
+{
+    QList<FormBuilderSaveLayoutEntry> rc;
+    if (const int count = formLayout->count()) {
+        rc.reserve(count);
+        for (int idx = 0; idx < count; ++idx) {
+            QLayoutItem *item = formLayout->itemAt(idx);
+            QFormLayout::ItemRole role = QFormLayout::LabelRole;
+            FormBuilderSaveLayoutEntry entry(item);
+            formLayout->getItemPosition(idx, &entry.row, &role);
+            switch (role ) {
+            case QFormLayout::LabelRole:
+                entry.column = 0;
+                break;
+            case QFormLayout::FieldRole:
+                entry.column = 1;
+                break;
+            case QFormLayout::SpanningRole:
+                entry.column = 0;
+                entry.columnSpan = 2;
+                break;
+            }
+            rc.push_back(entry);
+        }
+    }
+    return rc;
+}
+#endif
+
+/*!
+    \internal
+*/
+
+DomLayout *QAbstractFormBuilder::createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_layout)
+    DomLayout *lay = new DomLayout();
+    lay->setAttributeClass(QLatin1String(layout->metaObject()->className()));
+    const QString objectName = layout->objectName();
+    if (!objectName.isEmpty())
+        lay->setAttributeName(objectName);
+    lay->setElementProperty(computeProperties(layout));
+
+    QList<FormBuilderSaveLayoutEntry> newList;
+    if (QGridLayout *gridLayout = qobject_cast<QGridLayout *>(layout)) {
+        newList = saveGridLayoutEntries(gridLayout);
+#ifndef QT_NO_FORMLAYOUT
+    } else if (const QFormLayout *formLayout = qobject_cast<const QFormLayout *>(layout)) {
+        newList = saveFormLayoutEntries(formLayout);
+#endif
+    } else {
+        newList = saveLayoutEntries(layout);
+    }
+
+    QList<DomLayoutItem*> ui_items;
+    foreach (const FormBuilderSaveLayoutEntry &item, newList) {
+        if (DomLayoutItem *ui_item = createDom(item.item, lay, ui_parentWidget)) {
+            if (item.row >= 0)
+                ui_item->setAttributeRow(item.row);
+            if (item.column >= 0)
+                ui_item->setAttributeColumn(item.column);
+            if (item.rowSpan > 1)
+                ui_item->setAttributeRowSpan(item.rowSpan);
+            if (item.columnSpan > 1)
+                ui_item->setAttributeColSpan(item.columnSpan);
+            if (item.alignment)
+                ui_item->setAttributeAlignment(alignmentValue(item.alignment));
+            ui_items.append(ui_item);
+        }
+    }
+
+    lay->setElementItem(ui_items);
+
+    return lay;
+}
+
+/*!
+    \internal
+*/
+DomLayoutItem *QAbstractFormBuilder::createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget)
+{
+    DomLayoutItem *ui_item = new DomLayoutItem();
+
+    if (item->widget())  {
+        ui_item->setElementWidget(createDom(item->widget(), ui_parentWidget));
+        d->m_laidout.insert(item->widget(), true);
+    } else if (item->layout()) {
+        ui_item->setElementLayout(createDom(item->layout(), ui_layout, ui_parentWidget));
+    } else if (item->spacerItem()) {
+        ui_item->setElementSpacer(createDom(item->spacerItem(), ui_layout, ui_parentWidget));
+    }
+
+    return ui_item;
+}
+
+/*!
+    \internal
+*/
+DomSpacer *QAbstractFormBuilder::createDom(QSpacerItem *spacer, DomLayout *ui_layout, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_layout);
+    Q_UNUSED(ui_parentWidget);
+
+    DomSpacer *ui_spacer = new DomSpacer();
+    QList<DomProperty*> properties;
+
+    DomProperty *prop = 0;
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    // sizeHint property
+    prop = new DomProperty();
+    prop->setAttributeName(strings.sizeHintProperty);
+    prop->setElementSize(new DomSize());
+    prop->elementSize()->setElementWidth(spacer->sizeHint().width());
+    prop->elementSize()->setElementHeight(spacer->sizeHint().height());
+    properties.append(prop);
+
+    // orientation property
+    prop = new DomProperty(); // ### we don't implemented the case where expandingDirections() is both Vertical and Horizontal
+    prop->setAttributeName(strings.orientationProperty);
+    prop->setElementEnum((spacer->expandingDirections() & Qt::Horizontal) ? strings.qtHorizontal : strings.qtVertical);
+    properties.append(prop);
+
+    ui_spacer->setElementProperty(properties);
+    return ui_spacer;
+}
+
+/*!
+    \internal
+*/
+DomProperty *QAbstractFormBuilder::createProperty(QObject *obj, const QString &pname, const QVariant &v)
+{
+    if (!checkProperty(obj, pname)) {
+        return 0;
+    }
+    return variantToDomProperty(this, obj->metaObject(), pname, v);
+}
+
+/*!
+    \internal
+*/
+QList<DomProperty*> QAbstractFormBuilder::computeProperties(QObject *obj)
+{
+    QList<DomProperty*> lst;
+
+    const QMetaObject *meta = obj->metaObject();
+
+    QHash<QByteArray, bool> properties;
+    const int propertyCount = meta->propertyCount();
+    for(int i=0; i < propertyCount; ++i)
+        properties.insert(meta->property(i).name(), true);
+
+    const QList<QByteArray> propertyNames = properties.keys();
+
+    const int propertyNamesCount = propertyNames.size();
+    for(int i=0; i<propertyNamesCount ; ++i) {
+        const QString pname = QString::fromUtf8(propertyNames.at(i));
+        const QMetaProperty prop = meta->property(meta->indexOfProperty(pname.toUtf8()));
+
+        if (!prop.isWritable() || !checkProperty(obj, QLatin1String(prop.name())))
+            continue;
+
+        const QVariant v = prop.read(obj);
+
+        DomProperty *dom_prop = 0;
+        if (v.type() == QVariant::Int) {
+            dom_prop = new DomProperty();
+
+            if (prop.isFlagType())
+                uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Flags property are not supported yet."));
+
+            if (prop.isEnumType()) {
+                QString scope = QString::fromUtf8(prop.enumerator().scope());
+                if (scope.size())
+                    scope += QString::fromUtf8("::");
+                const QString e = QString::fromUtf8(prop.enumerator().valueToKey(v.toInt()));
+                if (e.size())
+                    dom_prop->setElementEnum(scope + e);
+            } else
+                dom_prop->setElementNumber(v.toInt());
+            dom_prop->setAttributeName(pname);
+        } else {
+            dom_prop = createProperty(obj, pname, v);
+        }
+
+        if (!dom_prop || dom_prop->kind() == DomProperty::Unknown)
+            delete dom_prop;
+        else
+            lst.append(dom_prop);
+    }
+
+    return lst;
+}
+
+
+/*!
+   \internal
+   \typedef QAbstractFormBuilder::DomPropertyHash
+   \typedef QAbstractFormBuilder::IconPaths
+*/
+
+
+/*!
+    \internal
+*/
+QAbstractFormBuilder::DomPropertyHash QAbstractFormBuilder::propertyMap(const QList<DomProperty*> &properties)
+{
+    DomPropertyHash map;
+
+    foreach (DomProperty *p, properties)
+        map.insert(p->attributeName(), p);
+
+    return map;
+}
+
+/*!
+    \internal
+*/
+bool QAbstractFormBuilder::checkProperty(QObject *obj, const QString &prop) const
+{
+    Q_UNUSED(obj);
+    Q_UNUSED(prop);
+
+    return true;
+}
+
+/*!
+    \internal
+*/
+QString QAbstractFormBuilder::toString(const DomString *str)
+{
+    return str ? str->text() : QString();
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::applyTabStops(QWidget *widget, DomTabStops *tabStops)
+{
+    if (!tabStops)
+        return;
+
+    QWidget *lastWidget = 0;
+
+    const QStringList l = tabStops->elementTabStop();
+    for (int i=0; i<l.size(); ++i) {
+        const QString name = l.at(i);
+
+        QWidget *child = widget->findChild<QWidget*>(name);
+        if (!child) {
+            uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "While applying tab stops: The widget '%1' could not be found.").arg(name));
+            continue;
+        }
+
+        if (i == 0) {
+            lastWidget = widget->findChild<QWidget*>(name);
+            continue;
+        } else if (!child || !lastWidget) {
+            continue;
+        }
+
+        QWidget::setTabOrder(lastWidget, child);
+
+        lastWidget = widget->findChild<QWidget*>(name);
+    }
+}
+
+/*!
+    \internal
+*/
+DomCustomWidgets *QAbstractFormBuilder::saveCustomWidgets()
+{
+    return 0;
+}
+
+/*!
+    \internal
+*/
+DomTabStops *QAbstractFormBuilder::saveTabStops()
+{
+    return 0;
+}
+
+/*!
+    \internal
+*/
+DomResources *QAbstractFormBuilder::saveResources()
+{
+    return 0;
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+DomButtonGroups *QAbstractFormBuilder::saveButtonGroups(const QWidget *mainContainer)
+{
+    // Save fst order buttongroup children of maincontainer
+    typedef QList<QButtonGroup*> ButtonGroupList;
+    const QObjectList mchildren = mainContainer->children();
+    if (mchildren.empty())
+        return 0;
+    QList<DomButtonGroup*> domGroups;
+    const QObjectList::const_iterator cend = mchildren.constEnd();
+    for (QObjectList::const_iterator it = mchildren.constBegin(); it != cend; ++it)
+        if (QButtonGroup *bg = qobject_cast<QButtonGroup *>(*it))
+            if (DomButtonGroup* dg = createDom(bg))
+                domGroups.push_back(dg);
+
+    if (domGroups.empty())
+        return 0;
+    DomButtonGroups *rc = new DomButtonGroups;
+    rc->setElementButtonGroup(domGroups);
+    return rc;
+}
+
+// VC6 would not find templated members, so we use statics and this utter hack.
+class FriendlyFB : public QAbstractFormBuilder {
+public:
+    using QAbstractFormBuilder::saveResource;
+    using QAbstractFormBuilder::saveText;
+    using QAbstractFormBuilder::resourceBuilder;
+    using QAbstractFormBuilder::textBuilder;
+    using QAbstractFormBuilder::toVariant;
+};
+
+template<class T>
+static void storeItemFlags(const T *item, QList<DomProperty*> *properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    static const Qt::ItemFlags defaultFlags = T().flags();
+    static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+
+    if (item->flags() != defaultFlags) {
+        DomProperty *p = new DomProperty;
+        p->setAttributeName(strings.flagsAttribute);
+        p->setElementSet(QString::fromAscii(itemFlags_enum.valueToKeys(item->flags())));
+        properties->append(p);
+    }
+}
+
+#ifndef Q_CC_RVCT
+// RVCT does not accept static inline functions if one argument is templated type
+// For this reason all necessary function variants are explicityly written for it.
+template<class T>
+static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const T *item,
+        QList<DomProperty*> *properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = formBuilder->saveText(it.second, item->data(it.first.second))))
+            properties->append(p);
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((v = item->data(it.first)).isValid() &&
+            (p = variantToDomProperty(abstractFormBuilder,
+                static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject),
+                it.second, v)))
+            properties->append(p);
+
+    if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole))))
+        properties->append(p);
+}
+
+template<class T>
+static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const T *item,
+        QList<DomProperty*> *properties)
+{
+    storeItemProps<T>(abstractFormBuilder, item, properties);
+    storeItemFlags<T>(item, properties);
+}
+
+template<class T>
+static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, T *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = properties.value(it.second))) {
+            v = formBuilder->textBuilder()->loadText(p);
+            QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v);
+            item->setData(it.first.first, qvariant_cast<QString>(nativeValue));
+            item->setData(it.first.second, v);
+        }
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((p = properties.value(it.second)) &&
+            (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid())
+            item->setData(it.first, v);
+
+    if ((p = properties.value(strings.iconAttribute))) {
+        v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p);
+        QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v);
+        item->setIcon(qvariant_cast<QIcon>(nativeValue));
+        item->setData(Qt::DecorationPropertyRole, v);
+    }
+}
+
+template<class T>
+static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, T *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+
+    loadItemProps<T>(abstractFormBuilder, item, properties);
+
+    DomProperty *p;
+    if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set)
+        item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii()));
+}
+
+#else
+
+static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const QTableWidgetItem *item,
+        QList<DomProperty*> *properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = formBuilder->saveText(it.second, item->data(it.first.second))))
+            properties->append(p);
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((v = item->data(it.first)).isValid() &&
+            (p = variantToDomProperty(abstractFormBuilder,
+                static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject),
+                it.second, v)))
+            properties->append(p);
+
+    if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole))))
+        properties->append(p);
+}
+
+static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const QListWidgetItem *item,
+        QList<DomProperty*> *properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = formBuilder->saveText(it.second, item->data(it.first.second))))
+            properties->append(p);
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((v = item->data(it.first)).isValid() &&
+            (p = variantToDomProperty(abstractFormBuilder,
+                static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject),
+                it.second, v)))
+            properties->append(p);
+
+    if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole))))
+        properties->append(p);
+}
+
+static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const QTableWidgetItem *item,
+        QList<DomProperty*> *properties)
+{
+    storeItemProps(abstractFormBuilder, item, properties);
+    storeItemFlags(item, properties);
+}
+
+static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const QListWidgetItem *item,
+        QList<DomProperty*> *properties)
+{
+    storeItemProps(abstractFormBuilder, item, properties);
+    storeItemFlags(item, properties);
+}
+
+static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, QTableWidgetItem *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = properties.value(it.second))) {
+            v = formBuilder->textBuilder()->loadText(p);
+            QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v);
+            item->setData(it.first.first, qvariant_cast<QString>(nativeValue));
+            item->setData(it.first.second, v);
+        }
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((p = properties.value(it.second)) &&
+            (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid())
+            item->setData(it.first, v);
+
+    if ((p = properties.value(strings.iconAttribute))) {
+        v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p);
+        QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v);
+        item->setIcon(qvariant_cast<QIcon>(nativeValue));
+        item->setData(Qt::DecorationPropertyRole, v);
+    }
+}
+
+static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, QListWidgetItem *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder);
+
+    DomProperty *p;
+    QVariant v;
+
+    foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+        if ((p = properties.value(it.second))) {
+            v = formBuilder->textBuilder()->loadText(p);
+            QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v);
+            item->setData(it.first.first, qvariant_cast<QString>(nativeValue));
+            item->setData(it.first.second, v);
+        }
+
+    foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+        if ((p = properties.value(it.second)) &&
+            (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid())
+            item->setData(it.first, v);
+
+    if ((p = properties.value(strings.iconAttribute))) {
+        v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p);
+        QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v);
+        item->setIcon(qvariant_cast<QIcon>(nativeValue));
+        item->setData(Qt::DecorationPropertyRole, v);
+    }
+}
+
+static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, QTableWidgetItem *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+
+    loadItemProps(abstractFormBuilder, item, properties);
+
+    DomProperty *p;
+    if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set)
+        item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii()));
+}
+
+static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, QListWidgetItem *item,
+        const QHash<QString, DomProperty*> &properties)
+{
+    static const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+
+    loadItemProps(abstractFormBuilder, item, properties);
+
+    DomProperty *p;
+    if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set)
+        item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii()));
+}
+
+#endif
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_parentWidget);
+
+    QList<DomColumn*> columns;
+    DomProperty *p;
+    QVariant v;
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    // save the header
+    for (int c = 0; c<treeWidget->columnCount(); ++c) {
+        DomColumn *column = new DomColumn;
+
+        QList<DomProperty*> properties;
+
+        foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) {
+            p = saveText(it.second, treeWidget->headerItem()->data(c, it.first.second));
+            // Prevent uic 4.4.X from crashing if it cannot find a column text
+            if (!p && it.first.first == Qt::EditRole && it.second == QLatin1String("text")) {
+                DomString *defaultHeader = new DomString;
+                defaultHeader->setText(QString::number(c + 1));
+                defaultHeader->setAttributeNotr(QLatin1String("true"));
+                p = new DomProperty;
+                p->setAttributeName(it.second);
+                p->setElementString(defaultHeader);
+            }
+            if (p)
+                properties.append(p);
+        }
+
+        foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+            if ((v = treeWidget->headerItem()->data(c, it.first)).isValid() &&
+                (p = variantToDomProperty(this, &QAbstractFormBuilderGadget::staticMetaObject, it.second, v)))
+                properties.append(p);
+
+        if ((p = saveResource(treeWidget->headerItem()->data(c, Qt::DecorationPropertyRole))))
+            properties.append(p);
+
+        column->setElementProperty(properties);
+        columns.append(column);
+    }
+
+    ui_widget->setElementColumn(columns);
+
+    QList<DomItem *> items = ui_widget->elementItem();
+
+    QQueue<QPair<QTreeWidgetItem *, DomItem *> > pendingQueue;
+    for (int i = 0; i < treeWidget->topLevelItemCount(); i++)
+        pendingQueue.enqueue(qMakePair(treeWidget->topLevelItem(i), (DomItem *)0));
+
+    while (!pendingQueue.isEmpty()) {
+        const QPair<QTreeWidgetItem *, DomItem *> pair = pendingQueue.dequeue();
+        QTreeWidgetItem *item = pair.first;
+        DomItem *parentDomItem = pair.second;
+
+        DomItem *currentDomItem = new DomItem;
+
+        QList<DomProperty*> properties;
+        for (int c = 0; c < treeWidget->columnCount(); c++) {
+            foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+                if ((p = saveText(it.second, item->data(c, it.first.second))))
+                    properties.append(p);
+
+            foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+                if ((v = item->data(c, it.first)).isValid() &&
+                    (p = variantToDomProperty(this, &QAbstractFormBuilderGadget::staticMetaObject, it.second, v)))
+                    properties.append(p);
+
+            if ((p = saveResource(item->data(c, Qt::DecorationPropertyRole))))
+                properties.append(p);
+        }
+        storeItemFlags(item, &properties);
+        currentDomItem->setElementProperty(properties);
+
+        if (parentDomItem) {
+            QList<DomItem *> childrenItems = parentDomItem->elementItem();
+            childrenItems.append(currentDomItem);
+            parentDomItem->setElementItem(childrenItems);
+        } else
+            items.append(currentDomItem);
+
+        for (int i = 0; i < item->childCount(); i++)
+            pendingQueue.enqueue(qMakePair(item->child(i), currentDomItem));
+    }
+
+    ui_widget->setElementItem(items);
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveTableWidgetExtraInfo(QTableWidget *tableWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_parentWidget);
+
+    // save the horizontal header
+    QList<DomColumn*> columns;
+    for (int c = 0; c < tableWidget->columnCount(); c++) {
+        QList<DomProperty*> properties;
+        QTableWidgetItem *item = tableWidget->horizontalHeaderItem(c);
+        if (item)
+            storeItemProps(this, item, &properties);
+
+        DomColumn *column = new DomColumn;
+        column->setElementProperty(properties);
+        columns.append(column);
+    }
+    ui_widget->setElementColumn(columns);
+
+    // save the vertical header
+    QList<DomRow*> rows;
+    for (int r = 0; r < tableWidget->rowCount(); r++) {
+        QList<DomProperty*> properties;
+        QTableWidgetItem *item = tableWidget->verticalHeaderItem(r);
+        if (item)
+            storeItemProps(this, item, &properties);
+
+        DomRow *row = new DomRow;
+        row->setElementProperty(properties);
+        rows.append(row);
+    }
+    ui_widget->setElementRow(rows);
+
+    QList<DomItem *> items = ui_widget->elementItem();
+    for (int r = 0; r < tableWidget->rowCount(); r++)
+        for (int c = 0; c < tableWidget->columnCount(); c++) {
+            QTableWidgetItem *item = tableWidget->item(r, c);
+            if (item) {
+                QList<DomProperty*> properties;
+                storeItemPropsNFlags(this, item, &properties);
+
+                DomItem *domItem = new DomItem;
+                domItem->setAttributeRow(r);
+                domItem->setAttributeColumn(c);
+                domItem->setElementProperty(properties);
+                items.append(domItem);
+            }
+        }
+
+    ui_widget->setElementItem(items);
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveListWidgetExtraInfo(QListWidget *listWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_parentWidget);
+
+    QList<DomItem*> ui_items = ui_widget->elementItem();
+    for (int i=0; i<listWidget->count(); ++i) {
+        QList<DomProperty*> properties;
+        storeItemPropsNFlags(this, listWidget->item(i), &properties);
+
+        DomItem *ui_item = new DomItem();
+        ui_item->setElementProperty(properties);
+        ui_items.append(ui_item);
+    }
+
+    ui_widget->setElementItem(ui_items);
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget *ui_widget, DomWidget *ui_parentWidget)
+{
+    Q_UNUSED(ui_parentWidget);
+    QList<DomItem*> ui_items = ui_widget->elementItem();
+
+    const int count = comboBox->count();
+    for (int i=0; i < count; ++i) {
+        // We might encounter items for which both builders return 0 in Designer
+        // (indicating a custom combo adding items in the constructor). Ignore those.
+        DomProperty *textProperty = saveText(QFormBuilderStrings::instance().textAttribute,
+                                             comboBox->itemData(i, Qt::DisplayPropertyRole));
+        DomProperty *iconProperty = saveResource(comboBox->itemData(i, Qt::DecorationPropertyRole));
+        if (textProperty || iconProperty) {
+            QList<DomProperty*> properties;
+            if (textProperty)
+                properties.push_back(textProperty);
+            if (iconProperty)
+                properties.push_back(iconProperty);
+
+            DomItem *ui_item = new DomItem();
+            ui_item->setElementProperty(properties);
+            ui_items.push_back(ui_item);
+        }
+    }
+
+    ui_widget->setElementItem(ui_items);
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+void QAbstractFormBuilder::saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *)
+{
+    typedef QList<DomProperty*> DomPropertyList;
+    if (const QButtonGroup *buttonGroup = widget->group()) {
+        DomPropertyList attributes = ui_widget->elementAttribute();
+        DomString *domString = new DomString();
+        domString->setText(buttonGroup->objectName());
+        domString->setAttributeNotr(QLatin1String("true"));
+        DomProperty *domProperty = new DomProperty();
+        domProperty->setAttributeName(QLatin1String(buttonGroupPropertyC));
+        domProperty->setElementString(domString);
+        attributes += domProperty;
+        ui_widget->setElementAttribute(attributes);
+    }
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+void QAbstractFormBuilder::saveItemViewExtraInfo(const QAbstractItemView *itemView,
+                                                 DomWidget *ui_widget, DomWidget *)
+{
+    //
+    // Special handling for qtableview/qtreeview fake header attributes
+    //
+    static QStringList realPropertyNames =
+            (QStringList() << QLatin1String("visible")
+                           << QLatin1String("cascadingSectionResizes")
+                           << QLatin1String("defaultSectionSize")
+                           << QLatin1String("highlightSections")
+                           << QLatin1String("minimumSectionSize")
+                           << QLatin1String("showSortIndicator")
+                           << QLatin1String("stretchLastSection"));
+
+    if (const QTreeView *treeView = qobject_cast<const QTreeView*>(itemView)) {
+        QList<DomProperty*> viewProperties = ui_widget->elementAttribute();
+        QList<DomProperty*> headerProperties = computeProperties(treeView->header());
+        foreach (const QString &realPropertyName, realPropertyNames) {
+            const QString upperPropertyName = realPropertyName.at(0).toUpper()
+                                              + realPropertyName.mid(1);
+            const QString fakePropertyName = QLatin1String("header") + upperPropertyName;
+            foreach (DomProperty *property, headerProperties) {
+                if (property->attributeName() == realPropertyName) {
+                    property->setAttributeName(fakePropertyName);
+                    viewProperties << property;
+                }
+            }
+        }
+        ui_widget->setElementAttribute(viewProperties);
+    } else if (const QTableView *tableView = qobject_cast<const QTableView*>(itemView)) {
+        static QStringList headerPrefixes =
+                (QStringList() << QLatin1String("horizontalHeader")
+                               << QLatin1String("verticalHeader"));
+
+        QList<DomProperty*> viewProperties = ui_widget->elementAttribute();
+        foreach (const QString &headerPrefix, headerPrefixes) {
+            QList<DomProperty*> headerProperties;
+            if (headerPrefix == QLatin1String("horizontalHeader"))
+                headerProperties = computeProperties(tableView->horizontalHeader());
+            else
+                headerProperties = computeProperties(tableView->verticalHeader());
+            foreach (const QString &realPropertyName, realPropertyNames) {
+                const QString upperPropertyName = realPropertyName.at(0).toUpper()
+                                                  + realPropertyName.mid(1);
+                const QString fakePropertyName = headerPrefix + upperPropertyName;
+                foreach (DomProperty *property, headerProperties) {
+                    if (property->attributeName() == realPropertyName) {
+                        property->setAttributeName(fakePropertyName);
+                        viewProperties << property;
+                    }
+                }
+            }
+        }
+        ui_widget->setElementAttribute(viewProperties);
+    }
+}
+
+/*!
+    \internal
+    \since 4.4
+*/
+
+void QAbstractFormBuilder::setResourceBuilder(QResourceBuilder *builder)
+{
+    d->setResourceBuilder(builder);
+}
+
+/*!
+    \internal
+    \since 4.4
+*/
+
+QResourceBuilder *QAbstractFormBuilder::resourceBuilder() const
+{
+    return d->resourceBuilder();
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+void QAbstractFormBuilder::setTextBuilder(QTextBuilder *builder)
+{
+    d->setTextBuilder(builder);
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+QTextBuilder *QAbstractFormBuilder::textBuilder() const
+{
+    return d->textBuilder();
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::saveExtraInfo(QWidget *widget, DomWidget *ui_widget,
+                                         DomWidget *ui_parentWidget)
+{
+    if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) {
+        saveListWidgetExtraInfo(listWidget, ui_widget, ui_parentWidget);
+    } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) {
+        saveTreeWidgetExtraInfo(treeWidget, ui_widget, ui_parentWidget);
+    } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) {
+        saveTableWidgetExtraInfo(tableWidget, ui_widget, ui_parentWidget);
+    } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) {
+        if (!qobject_cast<QFontComboBox*>(widget))
+            saveComboBoxExtraInfo(comboBox, ui_widget, ui_parentWidget);
+    } else if(QAbstractButton *ab = qobject_cast<QAbstractButton *>(widget)) {
+        saveButtonExtraInfo(ab, ui_widget, ui_parentWidget);
+    }
+    if (QAbstractItemView *itemView = qobject_cast<QAbstractItemView *>(widget)) {
+        saveItemViewExtraInfo(itemView, ui_widget, ui_parentWidget);
+    }
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget)
+{
+    Q_UNUSED(parentWidget);
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+
+    foreach (DomItem *ui_item, ui_widget->elementItem()) {
+        const DomPropertyHash properties = propertyMap(ui_item->elementProperty());
+        QListWidgetItem *item = new QListWidgetItem(listWidget);
+#ifndef Q_CC_RVCT
+        loadItemPropsNFlags<QListWidgetItem>(this, item, properties);
+#else
+        loadItemPropsNFlags(this, item, properties);
+#endif        
+    }
+
+    DomProperty *currentRow = propertyMap(ui_widget->elementProperty()).value(strings.currentRowProperty);
+    if (currentRow)
+        listWidget->setCurrentRow(currentRow->elementNumber());
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget)
+{
+    Q_UNUSED(parentWidget);
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags");
+    const QList<DomColumn*> columns = ui_widget->elementColumn();
+    if (columns.count() > 0)
+        treeWidget->setColumnCount(columns.count());
+
+    for (int i = 0; i<columns.count(); ++i) {
+        const DomColumn *c = columns.at(i);
+        const DomPropertyHash properties = propertyMap(c->elementProperty());
+
+        DomProperty *p;
+        QVariant v;
+
+        foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles)
+            if ((p = properties.value(it.second)) &&
+                (v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid())
+                treeWidget->headerItem()->setData(i, it.first, v);
+
+        foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles)
+            if ((p = properties.value(it.second))) {
+                v = textBuilder()->loadText(p);
+                QVariant nativeValue = textBuilder()->toNativeValue(v);
+                treeWidget->headerItem()->setData(i, it.first.first, qvariant_cast<QString>(nativeValue));
+                treeWidget->headerItem()->setData(i, it.first.second, v);
+            }
+
+        if ((p = properties.value(strings.iconAttribute))) {
+            v = resourceBuilder()->loadResource(workingDirectory(), p);
+            QVariant nativeValue = resourceBuilder()->toNativeValue(v);
+            treeWidget->headerItem()->setIcon(i, qvariant_cast<QIcon>(nativeValue));
+            treeWidget->headerItem()->setData(i, Qt::DecorationPropertyRole, v);
+        }
+    }
+
+    QQueue<QPair<DomItem *, QTreeWidgetItem *> > pendingQueue;
+    foreach (DomItem *ui_item, ui_widget->elementItem())
+        pendingQueue.enqueue(qMakePair(ui_item, (QTreeWidgetItem *)0));
+
+    while (!pendingQueue.isEmpty()) {
+        const QPair<DomItem *, QTreeWidgetItem *> pair = pendingQueue.dequeue();
+        const DomItem *domItem = pair.first;
+        QTreeWidgetItem *parentItem = pair.second;
+
+        QTreeWidgetItem *currentItem = 0;
+
+        if (parentItem)
+            currentItem = new QTreeWidgetItem(parentItem);
+        else
+            currentItem = new QTreeWidgetItem(treeWidget);
+
+        const QList<DomProperty *> properties = domItem->elementProperty();
+        int col = -1;
+        foreach (DomProperty *property, properties) {
+            if (property->attributeName() == strings.flagsAttribute && !property->elementSet().isEmpty()) {
+                currentItem->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, property->elementSet().toAscii()));
+            } else if (property->attributeName() == strings.textAttribute && property->elementString()) {
+                col++;
+                QVariant textV = textBuilder()->loadText(property);
+                QVariant nativeValue = textBuilder()->toNativeValue(textV);
+                currentItem->setText(col, qvariant_cast<QString>(nativeValue));
+                currentItem->setData(col, Qt::DisplayPropertyRole, textV);
+            } else if (col >= 0) {
+                if (property->attributeName() == strings.iconAttribute) {
+                    QVariant v = resourceBuilder()->loadResource(workingDirectory(), property);
+                    if (v.isValid()) {
+                        QVariant nativeValue = resourceBuilder()->toNativeValue(v);
+                        currentItem->setIcon(col, qvariant_cast<QIcon>(nativeValue));
+                        currentItem->setData(col, Qt::DecorationPropertyRole, v);
+                    }
+                } else {
+                    QVariant v;
+                    int role = strings.treeItemRoleHash.value(property->attributeName(), (Qt::ItemDataRole)-1);
+                    if (role >= 0) {
+                        if ((v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, property)).isValid())
+                            currentItem->setData(col, role, v);
+                    } else {
+                        QPair<Qt::ItemDataRole, Qt::ItemDataRole> rolePair =
+                            strings.treeItemTextRoleHash.value(property->attributeName(),
+                                         qMakePair((Qt::ItemDataRole)-1, (Qt::ItemDataRole)-1));
+                        if (rolePair.first >= 0) {
+                            QVariant textV = textBuilder()->loadText(property);
+                            QVariant nativeValue = textBuilder()->toNativeValue(textV);
+                            currentItem->setData(col, rolePair.first, qvariant_cast<QString>(nativeValue));
+                            currentItem->setData(col, rolePair.second, textV);
+                        }
+                    }
+                }
+            }
+        }
+
+        foreach (DomItem *childItem, domItem->elementItem())
+            pendingQueue.enqueue(qMakePair(childItem, currentItem));
+
+    }
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget)
+{
+    Q_UNUSED(parentWidget);
+
+    const QList<DomColumn*> columns = ui_widget->elementColumn();
+    if (columns.count() > 0)
+        tableWidget->setColumnCount(columns.count());
+    for (int i = 0; i< columns.count(); i++) {
+        DomColumn *c = columns.at(i);
+        const DomPropertyHash properties = propertyMap(c->elementProperty());
+
+        if (!properties.isEmpty()) {
+            QTableWidgetItem *item = new QTableWidgetItem;
+            loadItemProps(this, item, properties);
+            tableWidget->setHorizontalHeaderItem(i, item);
+        }
+    }
+
+    const QList<DomRow*> rows = ui_widget->elementRow();
+    if (rows.count() > 0)
+        tableWidget->setRowCount(rows.count());
+    for (int i = 0; i< rows.count(); i++) {
+        const DomRow *r = rows.at(i);
+        const DomPropertyHash properties = propertyMap(r->elementProperty());
+
+        if (!properties.isEmpty()) {
+            QTableWidgetItem *item = new QTableWidgetItem;
+            loadItemProps(this, item, properties);
+            tableWidget->setVerticalHeaderItem(i, item);
+        }
+    }
+
+    foreach (DomItem *ui_item, ui_widget->elementItem()) {
+        if (ui_item->hasAttributeRow() && ui_item->hasAttributeColumn()) {
+            const DomPropertyHash properties = propertyMap(ui_item->elementProperty());
+            QTableWidgetItem *item = new QTableWidgetItem;
+            loadItemPropsNFlags(this, item, properties);
+            tableWidget->setItem(ui_item->attributeRow(), ui_item->attributeColumn(), item);
+        }
+    }
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget)
+{
+    Q_UNUSED(parentWidget);
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    foreach (DomItem *ui_item, ui_widget->elementItem()) {
+        const DomPropertyHash properties = propertyMap(ui_item->elementProperty());
+        QString text;
+        QIcon icon;
+        QVariant textData;
+        QVariant iconData;
+
+        DomProperty *p = 0;
+
+        p = properties.value(strings.textAttribute);
+        if (p && p->elementString()) {
+             textData = textBuilder()->loadText(p);
+             text = qvariant_cast<QString>(textBuilder()->toNativeValue(textData));
+        }
+
+        p = properties.value(strings.iconAttribute);
+        if (p) {
+             iconData = resourceBuilder()->loadResource(workingDirectory(), p);
+             icon = qvariant_cast<QIcon>(resourceBuilder()->toNativeValue(iconData));
+        }
+
+        comboBox->addItem(icon, text);
+        comboBox->setItemData((comboBox->count()-1), iconData, Qt::DecorationPropertyRole);
+        comboBox->setItemData((comboBox->count()-1), textData, Qt::DisplayPropertyRole);
+    }
+
+    DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty);
+    if (currentIndex)
+        comboBox->setCurrentIndex(currentIndex->elementNumber());
+}
+
+// Get the button group name out of a widget's attribute list
+static QString buttonGroupName(const DomWidget *ui_widget)
+{
+    typedef QList<DomProperty*> DomPropertyList;
+    const DomPropertyList attributes = ui_widget->elementAttribute();
+    if (attributes.empty())
+        return QString();
+    const QString buttonGroupProperty = QLatin1String(buttonGroupPropertyC);
+    const DomPropertyList::const_iterator cend = attributes.constEnd();
+    for (DomPropertyList::const_iterator it = attributes.constBegin(); it != cend; ++it)
+        if ( (*it)->attributeName() == buttonGroupProperty)
+            return (*it)->elementString()->text();
+    return QString();
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+void QAbstractFormBuilder::loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *)
+{
+    typedef QFormBuilderExtra::ButtonGroupEntry ButtonGroupEntry;
+    typedef QFormBuilderExtra::ButtonGroupHash ButtonGroupHash;
+
+    const QString groupName = buttonGroupName(ui_widget);
+    if (groupName.isEmpty())
+        return;
+    // Find entry
+    ButtonGroupHash &buttonGroups = d->buttonGroups();
+    ButtonGroupHash::iterator it = buttonGroups.find(groupName);
+    if (it == buttonGroups.end()) {
+#ifdef QFORMINTERNAL_NAMESPACE // Suppress the warning when copying in Designer
+        uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Invalid QButtonGroup reference '%1' referenced by '%2'.").arg(groupName, button->objectName()));
+#endif
+        return;
+    }
+    // Create button group on demand?
+    QButtonGroup *&group = it.value().second;
+    if (group == 0) {
+        group = new QButtonGroup;
+        group->setObjectName(groupName);
+        applyProperties(group,  it.value().first->elementProperty());
+    }
+    group->addButton(button);
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+void QAbstractFormBuilder::loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView,
+                                                 QWidget *)
+{
+    //
+    // Special handling for qtableview/qtreeview fake header attributes
+    //
+    static QStringList realPropertyNames =
+            (QStringList() << QLatin1String("visible")
+                           << QLatin1String("cascadingSectionResizes")
+                           << QLatin1String("defaultSectionSize")
+                           << QLatin1String("highlightSections")
+                           << QLatin1String("minimumSectionSize")
+                           << QLatin1String("showSortIndicator")
+                           << QLatin1String("stretchLastSection"));
+
+    if (QTreeView *treeView = qobject_cast<QTreeView*>(itemView)) {
+        QList<DomProperty*> allAttributes = ui_widget->elementAttribute();
+        QList<DomProperty*> headerProperties;
+        foreach (const QString &realPropertyName, realPropertyNames) {
+            const QString upperPropertyName = realPropertyName.at(0).toUpper()
+                                              + realPropertyName.mid(1);
+            const QString fakePropertyName = QLatin1String("header") + upperPropertyName;
+            foreach (DomProperty *attr, allAttributes) {
+                if (attr->attributeName() == fakePropertyName) {
+                    attr->setAttributeName(realPropertyName);
+                    headerProperties << attr;
+                }
+            }
+        }
+        applyProperties(treeView->header(), headerProperties);
+    } else if (QTableView *tableView = qobject_cast<QTableView*>(itemView)) {
+        static QStringList headerPrefixes =
+                (QStringList() << QLatin1String("horizontalHeader")
+                               << QLatin1String("verticalHeader"));
+
+        QList<DomProperty*> allAttributes = ui_widget->elementAttribute();
+        foreach (const QString &headerPrefix, headerPrefixes) {
+            QList<DomProperty*> headerProperties;
+            foreach (const QString &realPropertyName, realPropertyNames) {
+                const QString upperPropertyName = realPropertyName.at(0).toUpper()
+                                                  + realPropertyName.mid(1);
+                const QString fakePropertyName = headerPrefix + upperPropertyName;
+                foreach (DomProperty *attr, allAttributes) {
+                    if (attr->attributeName() == fakePropertyName) {
+                        attr->setAttributeName(realPropertyName);
+                        headerProperties << attr;
+                    }
+                }
+            }
+            if (headerPrefix == QLatin1String("horizontalHeader"))
+                applyProperties(tableView->horizontalHeader(), headerProperties);
+            else
+                applyProperties(tableView->verticalHeader(), headerProperties);
+        }
+    }
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
+{
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    if (0) {
+#ifndef QT_NO_LISTWIDGET
+    } else if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) {
+        loadListWidgetExtraInfo(ui_widget, listWidget, parentWidget);
+#endif
+#ifndef QT_NO_TREEWIDGET
+    } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) {
+        loadTreeWidgetExtraInfo(ui_widget, treeWidget, parentWidget);
+#endif
+#ifndef QT_NO_TABLEWIDGET
+    } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) {
+        loadTableWidgetExtraInfo(ui_widget, tableWidget, parentWidget);
+#endif
+#ifndef QT_NO_COMBOBOX
+    } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) {
+        if (!qobject_cast<QFontComboBox *>(widget))
+            loadComboBoxExtraInfo(ui_widget, comboBox, parentWidget);
+#endif
+#ifndef QT_NO_TABWIDGET
+    } else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(widget)) {
+        const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty);
+        if (currentIndex)
+            tabWidget->setCurrentIndex(currentIndex->elementNumber());
+#endif
+#ifndef QT_NO_STACKEDWIDGET
+    } else if (QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(widget)) {
+        const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty);
+        if (currentIndex)
+            stackedWidget->setCurrentIndex(currentIndex->elementNumber());
+#endif
+#ifndef QT_NO_TOOLBOX
+    } else if (QToolBox *toolBox = qobject_cast<QToolBox*>(widget)) {
+        const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty);
+        if (currentIndex)
+            toolBox->setCurrentIndex(currentIndex->elementNumber());
+        const DomProperty *tabSpacing = propertyMap(ui_widget->elementProperty()).value(strings.tabSpacingProperty);
+        if (tabSpacing)
+            toolBox->layout()->setSpacing(tabSpacing->elementNumber());
+#endif
+    } else if (QAbstractButton *ab = qobject_cast<QAbstractButton *>(widget)) {
+        loadButtonExtraInfo(ui_widget, ab, parentWidget);
+    }
+    if (QAbstractItemView *itemView = qobject_cast<QAbstractItemView *>(widget)) {
+        loadItemViewExtraInfo(ui_widget, itemView, parentWidget);
+    }
+}
+
+/*!
+    Returns the current working directory of the form builder.
+
+    \sa setWorkingDirectory() */
+QDir QAbstractFormBuilder::workingDirectory() const
+{
+    return d->m_workingDirectory;
+}
+
+/*!
+    Sets the current working directory of the form builder to the
+    specified \a directory.
+
+    \sa workingDirectory()*/
+void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)
+{
+    d->m_workingDirectory = directory;
+}
+
+/*!
+    \internal
+*/
+DomAction *QAbstractFormBuilder::createDom(QAction *action)
+{
+    if (action->parentWidget() == action->menu() || action->isSeparator())
+        return 0;
+
+    DomAction *ui_action = new DomAction;
+    ui_action->setAttributeName(action->objectName());
+
+    const QList<DomProperty*> properties = computeProperties(action);
+    ui_action->setElementProperty(properties);
+
+    return ui_action;
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+DomButtonGroup *QAbstractFormBuilder::createDom(QButtonGroup *buttonGroup)
+{
+    if (buttonGroup->buttons().count() == 0) // Empty group left over on form?
+        return 0;
+    DomButtonGroup *domButtonGroup = new DomButtonGroup;
+    domButtonGroup->setAttributeName(buttonGroup->objectName());
+
+    QList<DomProperty*> properties = computeProperties(buttonGroup);
+    domButtonGroup->setElementProperty(properties);
+    return domButtonGroup;
+}
+
+/*!
+    \internal
+*/
+DomActionGroup *QAbstractFormBuilder::createDom(QActionGroup *actionGroup)
+{
+    DomActionGroup *ui_action_group = new DomActionGroup;
+    ui_action_group->setAttributeName(actionGroup->objectName());
+
+    QList<DomProperty*> properties = computeProperties(actionGroup);
+    ui_action_group->setElementProperty(properties);
+
+    QList<DomAction*> ui_actions;
+
+    foreach (QAction *action, actionGroup->actions()) {
+        if (DomAction *ui_action = createDom(action)) {
+            ui_actions.append(ui_action);
+        }
+    }
+
+    ui_action_group->setElementAction(ui_actions);
+
+    return ui_action_group;
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::addMenuAction(QAction *action)
+{
+    Q_UNUSED(action);
+}
+
+/*!
+    \internal
+*/
+void QAbstractFormBuilder::reset()
+{
+    d->m_laidout.clear();
+    d->m_actions.clear();
+    d->m_actionGroups.clear();
+    d->m_defaultMargin = INT_MIN;
+    d->m_defaultSpacing = INT_MIN;
+}
+
+/*!
+    \internal
+    Access meta enumeration for Qt::ToolBarArea
+*/
+
+QMetaEnum QAbstractFormBuilder::toolBarAreaMetaEnum()
+{
+    return metaEnum<QAbstractFormBuilderGadget>("toolBarArea");
+}
+
+/*!
+    \internal
+    Return paths of an icon.
+*/
+
+QAbstractFormBuilder::IconPaths QAbstractFormBuilder::iconPaths(const QIcon &icon) const
+{
+    Q_UNUSED(icon);
+    qWarning() << "QAbstractFormBuilder::iconPaths() is obsoleted";
+    return IconPaths();
+}
+
+/*!
+    \internal
+    Return paths of a pixmap.
+*/
+
+QAbstractFormBuilder::IconPaths QAbstractFormBuilder::pixmapPaths(const QPixmap &pixmap) const
+{
+    Q_UNUSED(pixmap);
+    qWarning() << "QAbstractFormBuilder::pixmapPaths() is obsoleted";
+    return IconPaths();
+}
+
+/*!
+    \internal
+    Set up a DOM property with icon.
+*/
+
+void QAbstractFormBuilder::setIconProperty(DomProperty &p, const IconPaths &ip) const
+{
+    DomResourceIcon *dpi = new DomResourceIcon;
+
+ /* TODO
+    if (!ip.second.isEmpty())
+        pix->setAttributeResource(ip.second);
+*/
+    dpi->setText(ip.first);
+
+    p.setAttributeName(QFormBuilderStrings::instance().iconAttribute);
+    p.setElementIconSet(dpi);
+}
+
+/*!
+    \internal
+    Set up a DOM property with pixmap.
+*/
+
+void QAbstractFormBuilder::setPixmapProperty(DomProperty &p, const IconPaths &ip) const
+{
+    DomResourcePixmap *pix = new DomResourcePixmap;
+    if (!ip.second.isEmpty())
+        pix->setAttributeResource(ip.second);
+
+    pix->setText(ip.first);
+
+    p.setAttributeName(QFormBuilderStrings::instance().pixmapAttribute);
+    p.setElementPixmap(pix);
+}
+
+/*!
+    \internal
+    Convenience. Return DOM property for icon; 0 if icon.isNull().
+*/
+
+DomProperty* QAbstractFormBuilder::iconToDomProperty(const QIcon &icon) const
+{
+    Q_UNUSED(icon);
+    qWarning() << "QAbstractFormBuilder::iconToDomProperty() is obsoleted";
+    return 0;
+}
+
+/*!
+    \internal
+    \since 4.4
+*/
+
+DomProperty *QAbstractFormBuilder::saveResource(const QVariant &v) const
+{
+    if (v.isNull())
+        return 0;
+
+    DomProperty *p = resourceBuilder()->saveResource(workingDirectory(), v);
+    if (p)
+        p->setAttributeName(QFormBuilderStrings::instance().iconAttribute);
+    return p;
+}
+
+/*!
+    \internal
+    \since 4.5
+*/
+
+DomProperty *QAbstractFormBuilder::saveText(const QString &attributeName, const QVariant &v) const
+{
+    if (v.isNull())
+        return 0;
+
+    DomProperty *p = textBuilder()->saveText(v);
+    if (p)
+        p->setAttributeName(attributeName);
+    return p;
+}
+
+/*!
+    \internal
+    Return the appropriate DOM pixmap for an image dom property.
+    From 4.4 - unused
+*/
+
+const DomResourcePixmap *QAbstractFormBuilder::domPixmap(const DomProperty* p) {
+    switch (p->kind()) {
+    case DomProperty::IconSet:
+        qDebug() << "** WARNING QAbstractFormBuilder::domPixmap() called for icon set!";
+        break;
+    case DomProperty::Pixmap:
+        return p->elementPixmap();
+    default:
+        break;
+    }
+    return 0;
+}
+
+/*!
+    \internal
+    Create icon from DOM.
+    From 4.4 - unused
+*/
+
+QIcon QAbstractFormBuilder::domPropertyToIcon(const DomResourcePixmap *icon)
+{
+    Q_UNUSED(icon);
+    qWarning() << "QAbstractFormBuilder::domPropertyToIcon() is obsoleted";
+    return QIcon();
+}
+
+/*!
+    \internal
+    Create icon from DOM. Assert if !domPixmap
+    From 4.4 - unused
+*/
+
+QIcon QAbstractFormBuilder::domPropertyToIcon(const DomProperty* p)
+{
+    Q_UNUSED(p);
+    qWarning() << "QAbstractFormBuilder::domPropertyToIcon() is obsoleted";
+    return QIcon();
+}
+
+
+/*!
+    \internal
+    Create pixmap from DOM.
+    From 4.4 - unused
+*/
+
+QPixmap QAbstractFormBuilder::domPropertyToPixmap(const DomResourcePixmap* pixmap)
+{
+    Q_UNUSED(pixmap);
+    qWarning() << "QAbstractFormBuilder::domPropertyToPixmap() is obsoleted";
+    return QPixmap();
+}
+
+
+/*!
+    \internal
+    Create pixmap from DOM. Assert if !domPixmap
+    From 4.4 - unused
+*/
+
+QPixmap QAbstractFormBuilder::domPropertyToPixmap(const DomProperty* p)
+{
+    Q_UNUSED(p);
+    qWarning() << "QAbstractFormBuilder::domPropertyToPixmap() is obsoleted";
+    return QPixmap();
+}
+
+/*!
+    \fn void QAbstractFormBuilder::createConnections ( DomConnections *, QWidget * )
+    \internal
+*/
+
+/*!
+    \fn void QAbstractFormBuilder::createCustomWidgets ( DomCustomWidgets * )
+    \internal
+*/
+
+/*!
+    \fn void QAbstractFormBuilder::createResources ( DomResources * )
+    \internal
+*/
+
+/*!
+     \fn QFormScriptRunner *QAbstractFormBuilder::formScriptRunner() const
+     \internal
+     \since 4.3
+*/
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+QFormScriptRunner *QAbstractFormBuilder::formScriptRunner() const
+{
+    return &(d->formScriptRunner());
+}
+#endif
+
+/*!
+    Sets whether the execution of scripts is enabled to \a enabled.
+    \since 4.3
+    \internal
+*/
+
+void QAbstractFormBuilder::setScriptingEnabled(bool enabled)
+{
+#ifdef QT_FORMBUILDER_NO_SCRIPT
+    if (enabled)
+        uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "This version of the uitools library is linked without script support."));
+#else
+    QFormScriptRunner::Options options = formScriptRunner()->options();
+    if (enabled)
+        options &= ~QFormScriptRunner::DisableScripts;
+    else
+        options |= QFormScriptRunner::DisableScripts;
+    formScriptRunner()->setOptions(options);
+#endif
+}
+
+/*!
+    Returns whether the execution of scripts is enabled.
+    \sa setScriptingEnabled()
+    \since 4.3
+    \internal
+*/
+
+bool QAbstractFormBuilder::isScriptingEnabled() const
+{
+#ifdef QT_FORMBUILDER_NO_SCRIPT
+    return false;
+#else
+    return !(formScriptRunner()->options() & QFormScriptRunner::DisableScripts);
+#endif
+}
+
+/*!
+    Returns a human-readable description of the last error occurred in load().
+
+    \since 5.0
+    \sa load()
+*/
+
+QString QAbstractFormBuilder::errorString() const
+{
+    return d->m_errorString;
+}
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/abstractformbuilder.h b/src/designer/src/lib/uilib/abstractformbuilder.h
new file mode 100644
index 0000000000000000000000000000000000000000..d0882500be9fa73435bbf32ca2e35bfed3175e04
--- /dev/null
+++ b/src/designer/src/lib/uilib/abstractformbuilder.h
@@ -0,0 +1,283 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef ABSTRACTFORMBUILDER_H
+#define ABSTRACTFORMBUILDER_H
+
+#include "uilib_global.h"
+
+#include <QtCore/QList>
+#include <QtCore/QHash>
+#include <QtCore/QDir>
+#include <QtCore/QScopedPointer>
+
+#include <QtWidgets/QSizePolicy>
+#include <QtGui/QPalette>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+#if 0
+// pragma for syncqt, don't remove.
+
+#pragma qt_class(QAbstractFormBuilder)
+#endif
+
+class QAction;
+class QButtonGroup;
+class QActionGroup;
+class QComboBox;
+class QIODevice;
+class QIcon;
+class QLayout;
+class QLayoutItem;
+class QListWidget;
+class QObject;
+class QSpacerItem;
+class QTreeWidget;
+class QTableWidget;
+class QVariant;
+class QWidget;
+class QAbstractButton;
+class QAbstractItemView;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class DomAction;
+class DomActionGroup;
+class DomButtonGroup;
+class DomButtonGroups;
+class DomActionRef;
+class DomBrush;
+class DomColorGroup;
+class DomConnections;
+class DomCustomWidgets;
+class DomLayout;
+class DomLayoutItem;
+class DomProperty;
+class DomResources;
+class DomSpacer;
+class DomString;
+class DomTabStops;
+class DomUI;
+class DomWidget;
+class DomResourcePixmap;
+
+class QResourceBuilder;
+class QTextBuilder;
+class QFormBuilderExtra;
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+class QFormScriptRunner;
+#endif
+
+class QDESIGNER_UILIB_EXPORT QAbstractFormBuilder
+{
+public:
+    QAbstractFormBuilder();
+    virtual ~QAbstractFormBuilder();
+
+    QDir workingDirectory() const;
+    void setWorkingDirectory(const QDir &directory);
+
+    virtual QWidget *load(QIODevice *dev, QWidget *parentWidget=0);
+    virtual void save(QIODevice *dev, QWidget *widget);
+
+    void setScriptingEnabled(bool enabled);
+    bool isScriptingEnabled() const;
+
+    QString errorString() const;
+
+protected:
+//
+// load
+//
+    virtual void loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
+
+    virtual QWidget *create(DomUI *ui, QWidget *parentWidget);
+    virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget);
+    virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget);
+    virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget);
+
+    virtual QAction *create(DomAction *ui_action, QObject *parent);
+    virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent);
+    virtual void addMenuAction(QAction *action);
+
+    virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties);
+    bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
+
+    virtual void applyTabStops(QWidget *widget, DomTabStops *tabStops);
+
+    virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name);
+    virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name);
+    virtual QAction *createAction(QObject *parent, const QString &name);
+    virtual QActionGroup *createActionGroup(QObject *parent, const QString &name);
+
+    virtual void createCustomWidgets(DomCustomWidgets *) {}
+    virtual void createConnections(DomConnections *, QWidget *) {}
+    virtual void createResources(DomResources*) {}
+
+    virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout);
+    virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
+
+//
+// save
+//
+    virtual void saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+
+    virtual void saveDom(DomUI *ui, QWidget *widget);
+
+    virtual DomActionRef *createActionRefDom(QAction *action);
+
+    virtual DomWidget *createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive = true);
+    virtual DomLayout *createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget);
+    virtual DomLayoutItem *createDom(QLayoutItem *item, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
+    virtual DomSpacer *createDom(QSpacerItem *spacer, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
+
+    virtual DomAction *createDom(QAction *action);
+    virtual DomActionGroup *createDom(QActionGroup *actionGroup);
+    DomButtonGroup *createDom(QButtonGroup *buttonGroup);
+
+    virtual DomConnections *saveConnections();
+    virtual DomCustomWidgets *saveCustomWidgets();
+    virtual DomTabStops *saveTabStops();
+    virtual DomResources *saveResources();
+    DomButtonGroups *saveButtonGroups(const QWidget *mainContainer);
+    virtual QList<DomProperty*> computeProperties(QObject *obj);
+    virtual bool checkProperty(QObject *obj, const QString &prop) const;
+    virtual DomProperty *createProperty(QObject *object, const QString &propertyName, const QVariant &value);
+
+    virtual void layoutInfo(DomLayout *layout, QObject *parent, int *margin, int *spacing);
+
+    void loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget);
+    void loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget);
+    void loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget);
+    void loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget);
+    void loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget);
+    void loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget);
+
+    void saveListWidgetExtraInfo(QListWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+    void saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+    void saveTableWidgetExtraInfo(QTableWidget *tablWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+    void saveComboBoxExtraInfo(QComboBox *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+    void saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+    void saveItemViewExtraInfo(const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget);
+
+    void setResourceBuilder(QResourceBuilder *builder);
+    QResourceBuilder *resourceBuilder() const;
+    DomProperty *saveResource(const QVariant &v) const;
+
+    void setTextBuilder(QTextBuilder *builder);
+    QTextBuilder *textBuilder() const;
+    DomProperty *saveText(const QString &attributeName, const QVariant &v) const;
+//
+// utils
+//
+
+    QVariant toVariant(const QMetaObject *meta, DomProperty *property);
+    static QString toString(const DomString *str);
+
+    typedef QHash<QString, DomProperty*> DomPropertyHash;
+    static DomPropertyHash propertyMap(const QList<DomProperty*> &properties);
+
+    void setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group);
+    DomColorGroup *saveColorGroup(const QPalette &palette);
+    QBrush setupBrush(DomBrush *brush);
+    DomBrush *saveBrush(const QBrush &brush);
+
+    void reset();
+    void initialize(const DomUI *ui);
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    QFormScriptRunner *formScriptRunner() const;
+#endif
+//
+//  utils
+//
+
+    static QMetaEnum toolBarAreaMetaEnum();
+
+//
+//  Icon/pixmap stuff
+//
+    // A Pair of icon path/qrc path.
+    typedef QPair<QString, QString> IconPaths;
+
+    IconPaths iconPaths(const QIcon &) const;
+    IconPaths pixmapPaths(const QPixmap &) const;
+    void setIconProperty(DomProperty &, const IconPaths &) const;
+    void setPixmapProperty(DomProperty &, const IconPaths &) const;
+    DomProperty* iconToDomProperty(const QIcon &) const;
+
+    static const DomResourcePixmap *domPixmap(const DomProperty* p);
+    QIcon domPropertyToIcon(const DomResourcePixmap *);
+    QIcon domPropertyToIcon(const DomProperty* p);
+    QPixmap domPropertyToPixmap(const DomResourcePixmap* p);
+    QPixmap domPropertyToPixmap(const DomProperty* p);
+
+private:
+//
+//  utils
+//
+    static Qt::ToolBarArea toolbarAreaFromDOMAttributes(const DomPropertyHash &attributeMap);
+
+    QAbstractFormBuilder(const QAbstractFormBuilder &other);
+    void operator = (const QAbstractFormBuilder &other);
+
+    friend QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value);
+    friend QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder,const QMetaObject *meta, const DomProperty *property);
+
+protected:
+    QScopedPointer<QFormBuilderExtra> d;
+};
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // ABSTRACTFORMBUILDER_H
diff --git a/src/designer/src/lib/uilib/container.h b/src/designer/src/lib/uilib/container.h
new file mode 100644
index 0000000000000000000000000000000000000000..cf670edafb8f856e8f61b78aa93fde1f4c50db22
--- /dev/null
+++ b/src/designer/src/lib/uilib/container.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef CONTAINER_H
+#define CONTAINER_H
+
+#include <QtDesigner/extension.h>
+#include <QtCore/QObject>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QWidget;
+
+class QDesignerContainerExtension
+{
+public:
+    virtual ~QDesignerContainerExtension() {}
+
+    virtual int count() const = 0;
+    virtual QWidget *widget(int index) const = 0;
+
+    virtual int currentIndex() const = 0;
+    virtual void setCurrentIndex(int index) = 0;
+
+    virtual void addWidget(QWidget *widget) = 0;
+    virtual void insertWidget(int index, QWidget *widget) = 0;
+    virtual void remove(int index) = 0;
+
+    virtual bool canAddWidget() const
+    // ### Qt6 remove body, provided in Qt5 for source compatibility to Qt4.
+         { return true; }
+    virtual bool canRemove(int index) const
+    // ### Qt6 remove body, provided in Qt5 for source compatibility to Qt4.
+         { Q_UNUSED(index); return true; }
+};
+Q_DECLARE_EXTENSION_INTERFACE(QDesignerContainerExtension, "com.trolltech.Qt.Designer.Container")
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // CONTAINER_H
diff --git a/src/designer/src/lib/uilib/container.qdoc b/src/designer/src/lib/uilib/container.qdoc
new file mode 100644
index 0000000000000000000000000000000000000000..8f7a07d30ce030cd0f1641e56a0291df23157023
--- /dev/null
+++ b/src/designer/src/lib/uilib/container.qdoc
@@ -0,0 +1,199 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+    \class QDesignerContainerExtension
+    \brief The QDesignerContainerExtension class allows you to add pages to
+    a custom multi-page container in Qt Designer's workspace.
+    \inmodule QtDesigner
+
+    QDesignerContainerExtension provide an interface for creating
+    custom container extensions. A container extension consists of a
+    collection of functions that \QD needs to manage a multi-page
+    container plugin, and a list of the container's pages.
+
+    \image containerextension-example.png
+
+    \warning This is \e not an extension for container plugins in
+    general, only custom \e multi-page containers.
+
+    To create a container extension, your extension class must inherit
+    from both QObject and QDesignerContainerExtension. For example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 6
+
+    Since we are implementing an interface, we must ensure that it's
+    made known to the meta object system using the Q_INTERFACES()
+    macro. This enables \QD to use the qobject_cast() function to
+    query for supported interfaces using nothing but a QObject
+    pointer.
+
+    You must reimplement several functions to enable \QD to manage a
+    custom multi-page container widget: \QD uses count() to keep track
+    of the number pages in your container, widget() to return the page
+    at a given index in the list of the container's pages, and
+    currentIndex() to return the list index of the selected page. \QD
+    uses the addWidget() function to add a given page to the
+    container, expecting it to be appended to the list of pages, while
+    it expects the insertWidget() function to add a given page to the
+    container by inserting it at a given index.
+
+    In \QD the extensions are not created until they are
+    required. For that reason you must also create a
+    QExtensionFactory, i.e a class that is able to make an instance of
+    your extension, and register it using \QD's \l
+    {QExtensionManager}{extension manager}.
+
+    When a container extension is required, \QD's \l
+    {QExtensionManager}{extension manager} will run through all its
+    registered factories calling QExtensionFactory::createExtension()
+    for each until the first one that is able to create a container
+    extension, is found. This factory will then create the extension
+    for the plugin.
+
+    There are four available types of extensions in \QD:
+    QDesignerContainerExtension , QDesignerMemberSheetExtension,
+    QDesignerPropertySheetExtension and QDesignerTaskMenuExtension.
+    \QD's behavior is the same whether the requested extension is
+    associated with a multi page container, a member sheet, a property
+    sheet or a task menu.
+
+    The QExtensionFactory class provides a standard extension factory,
+    and can also be used as an interface for custom extension
+    factories. You can either create a new QExtensionFactory and
+    reimplement the QExtensionFactory::createExtension() function. For
+    example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 7
+
+    Or you can use an existing factory, expanding the
+    QExtensionFactory::createExtension() function to make the factory
+    able to create a container extension as well. For example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 8
+
+    For a complete example using the QDesignerContainerExtension
+    class, see the \l {designer/containerextension}{Container
+    Extension example}. The example shows how to create a custom
+    multi-page plugin for \QD.
+
+    \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+    Extensions}
+*/
+
+/*!
+    \fn QDesignerContainerExtension::~QDesignerContainerExtension()
+
+    Destroys the extension.
+*/
+
+/*!
+    \fn int QDesignerContainerExtension::count() const
+
+    Returns the number of pages in the container.
+*/
+
+/*!
+    \fn QWidget *QDesignerContainerExtension::widget(int index) const
+
+    Returns the page at the given \a index in the extension's list of
+    pages.
+
+    \sa addWidget(), insertWidget()
+*/
+
+/*!
+    \fn int QDesignerContainerExtension::currentIndex() const
+
+    Returns the index of the currently selected page in the
+    container.
+
+    \sa setCurrentIndex()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::setCurrentIndex(int index)
+
+    Sets the currently selected page in the container to be the
+    page at the given \a index in the extension's list of pages.
+
+    \sa currentIndex()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::addWidget(QWidget *page)
+
+    Adds the given \a page to the container by appending it to the
+    extension's list of pages.
+
+    \sa insertWidget(), remove(), widget()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page)
+
+    Adds the given \a page to the container by inserting it at the
+    given \a index in the extension's list of pages.
+
+    \sa addWidget(), remove(), widget()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::remove(int index)
+
+    Removes the page at the given \a index from the extension's list
+    of pages.
+
+    \sa addWidget(), insertWidget()
+*/
+
+/*!
+    \fn bool QDesignerContainerExtension::canAddWidget() const
+
+    Returns whether a widget can be added. This determines whether
+    the context menu options to add or insert pages are enabled.
+
+    This should return false for containers that have a single, fixed
+    page, for example QScrollArea or QDockWidget.
+
+    \since 5.0
+    \sa addWidget(), canRemove()
+*/
+
+/*!
+    \fn bool QDesignerContainerExtension::canRemove(int index) const
+
+    Returns whether the widget at the given \a index can be removed.
+    This determines whether the context menu option to remove the current
+    page is enabled.
+
+    This should return false for containers that have a single, fixed
+    page, for example QScrollArea or QDockWidget.
+
+    \since 5.0
+    \sa remove(), canAddWidget()
+*/
diff --git a/src/designer/src/lib/uilib/customwidget.h b/src/designer/src/lib/uilib/customwidget.h
new file mode 100644
index 0000000000000000000000000000000000000000..43cc055046374ea3e4fb4ce807b0ef41f5ef6a2c
--- /dev/null
+++ b/src/designer/src/lib/uilib/customwidget.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef CUSTOMWIDGET_H
+#define CUSTOMWIDGET_H
+
+#include "extension.h"
+#include <QtCore/QObject>
+#include <QtCore/QString>
+#include <QtWidgets/QIcon>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QWidget;
+class QDesignerFormEditorInterface;
+
+class QDesignerCustomWidgetInterface
+{
+public:
+    virtual ~QDesignerCustomWidgetInterface() {}
+
+    virtual QString name() const = 0;
+    virtual QString group() const = 0;
+    virtual QString toolTip() const = 0;
+    virtual QString whatsThis() const = 0;
+    virtual QString includeFile() const = 0;
+    virtual QIcon icon() const = 0;
+
+    virtual bool isContainer() const = 0;
+
+    virtual QWidget *createWidget(QWidget *parent) = 0;
+
+    virtual bool isInitialized() const { return false; }
+    virtual void initialize(QDesignerFormEditorInterface *core) { Q_UNUSED(core); }
+
+    virtual QString domXml() const
+    {
+        return QString::fromUtf8("<widget class=\"%1\" name=\"%2\"/>")
+            .arg(name()).arg(name().toLower());
+    }
+
+    virtual QString codeTemplate() const { return QString(); }
+};
+Q_DECLARE_INTERFACE(QDesignerCustomWidgetInterface, "com.trolltech.Qt.Designer.CustomWidget")
+
+
+class QDesignerCustomWidgetCollectionInterface
+{
+public:
+    virtual ~QDesignerCustomWidgetCollectionInterface() {}
+
+    virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const = 0;
+};
+Q_DECLARE_INTERFACE(QDesignerCustomWidgetCollectionInterface,
+    "com.trolltech.Qt.Designer.CustomWidgetCollection")
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // CUSTOMWIDGET_H
diff --git a/src/designer/src/lib/uilib/customwidget.qdoc b/src/designer/src/lib/uilib/customwidget.qdoc
new file mode 100644
index 0000000000000000000000000000000000000000..9c3bfdd9dfebd2918ac35e364b2b407048a78f63
--- /dev/null
+++ b/src/designer/src/lib/uilib/customwidget.qdoc
@@ -0,0 +1,295 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+    \class QDesignerCustomWidgetInterface
+
+    \brief The QDesignerCustomWidgetInterface class enables Qt Designer
+    to access and construct custom widgets.
+
+    \inmodule QtDesigner
+
+    QDesignerCustomWidgetInterface provides a custom widget with an
+    interface. The class contains a set of functions that must be subclassed
+    to return basic information about the widget, such as its class name and
+    the name of its header file. Other functions must be implemented to
+    initialize the plugin when it is loaded, and to construct instances of
+    the custom widget for \QD to use.
+
+    When implementing a custom widget you must subclass
+    QDesignerCustomWidgetInterface to expose your widget to \QD. For
+    example, this is the declaration for the plugin used in the
+    \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that
+    enables an analog clock custom widget to be used by \QD:
+
+    \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0
+
+    Note that the only part of the class definition that is specific
+    to this particular custom widget is the class name. In addition,
+    since we are implementing an interface, we must ensure that it's
+    made known to the meta object system using the Q_INTERFACES()
+    macro. This enables \QD to use the qobject_cast() function to
+    query for supported interfaces using nothing but a QObject
+    pointer.
+
+    After \QD loads a custom widget plugin, it calls the interface's
+    initialize() function to enable it to set up any resources that it
+    may need. This function is called with a QDesignerFormEditorInterface
+    parameter that provides the plugin with a gateway to all of \QD's API.
+
+    \QD constructs instances of the custom widget by calling the plugin's
+    createWidget() function with a suitable parent widget. Plugins must
+    construct and return an instance of a custom widget with the specified
+    parent widget. 
+
+    In the implementation of the class you must remember to export
+    your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2()
+    macro. For example, if a library called \c libcustomwidgetplugin.so
+    (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget
+    class called \c MyCustomWidget, we can export it by adding the
+    following line to the file containing the plugin implementation:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 14
+
+    This macro ensures that \QD can access and construct the custom widget.
+    Without this macro, there is no way for \QD to use it.
+
+    When implementing a custom widget plugin, you build it as a
+    separate library. If you want to include several custom widget
+    plugins in the same library, you must in addition subclass
+    QDesignerCustomWidgetCollectionInterface.
+
+    \warning If your custom widget plugin contains QVariant
+    properties, be aware that only the following \l
+    {QVariant::Type}{types} are supported:
+
+    \list
+    \o QVariant::ByteArray
+    \o QVariant::Bool
+    \o QVariant::Color
+    \o QVariant::Cursor
+    \o QVariant::Date
+    \o QVariant::DateTime
+    \o QVariant::Double
+    \o QVariant::Int
+    \o QVariant::Point
+    \o QVariant::Rect
+    \o QVariant::Size
+    \o QVariant::SizePolicy
+    \o QVariant::String
+    \o QVariant::Time
+    \o QVariant::UInt
+    \endlist
+
+    For a complete example using the QDesignerCustomWidgetInterface
+    class, see the \l {designer/customwidgetplugin}{Custom Widget
+    Example}. The example shows how to create a custom widget plugin
+    for \QD.
+
+    \sa QDesignerCustomWidgetCollectionInterface {Creating Custom
+    Widgets for Qt Designer}
+*/
+
+/*!
+    \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
+
+    Destroys the custom widget interface.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::name() const
+
+    Returns the class name of the custom widget supplied by the interface.
+
+    The name returned \e must be identical to the class name used for the
+    custom widget.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::group() const
+
+    Returns the name of the group to which the custom widget belongs.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::toolTip() const
+
+    Returns a short description of the widget that can be used by \QD
+    in a tool tip.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::whatsThis() const
+
+    Returns a description of the widget that can be used by \QD in
+    "What's This?" help for the widget.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::includeFile() const
+
+    Returns the path to the include file that \l uic uses when
+    creating code for the custom widget.
+*/
+
+/*!
+    \fn QIcon QDesignerCustomWidgetInterface::icon() const
+
+    Returns the icon used to represent the custom widget in \QD's
+    widget box.
+*/
+
+/*!
+    \fn bool QDesignerCustomWidgetInterface::isContainer() const
+
+    Returns true if the custom widget is intended to be used as a
+    container; otherwise returns false.
+
+    Most custom widgets are not used to hold other widgets, so their
+    implementations of this function will return false, but custom
+    containers will return true to ensure that they behave correctly
+    in \QD.
+*/
+
+/*!
+    \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
+
+    Returns a new instance of the custom widget, with the given \a
+    parent.
+*/
+
+/*!
+    \fn bool QDesignerCustomWidgetInterface::isInitialized() const
+
+    Returns true if the widget has been initialized; otherwise returns
+    false.
+
+    \sa initialize()
+*/
+
+/*!
+    \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
+
+    Initializes the widget for use with the specified \a formEditor
+    interface.
+
+    \sa isInitialized()
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::domXml() const
+
+    Returns the XML that is used to describe the custom widget's
+    properties to \QD.
+*/
+
+/*!
+    \fn QString QDesignerCustomWidgetInterface::codeTemplate() const
+
+    This function is reserved for future use by \QD.
+
+    \omit
+    Returns the code template that \QD includes in forms that contain
+    the custom widget when they are saved.
+    \endomit
+*/
+
+/*!
+    \macro QDESIGNER_WIDGET_EXPORT
+    \relates QDesignerCustomWidgetInterface
+    \since 4.1
+
+    This macro is used when defining custom widgets to ensure that they are
+    correctly exported from plugins for use with \QD.
+
+    On some platforms, the symbols required by \QD to create new widgets
+    are removed from plugins by the build system, making them unusable.
+    Using this macro ensures that the symbols are retained on those platforms,
+    and has no side effects on other platforms.
+
+    For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin}
+    example exports a custom widget class with the following declaration:
+
+    \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0
+    \dots
+    \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2
+
+    \sa {Creating Custom Widgets for Qt Designer}
+*/
+
+
+
+
+
+/*!
+    \class QDesignerCustomWidgetCollectionInterface
+
+    \brief The QDesignerCustomWidgetCollectionInterface class allows
+    you to include several custom widgets in one single library.
+
+    \inmodule QtDesigner
+
+    When implementing a custom widget plugin, you build it as a
+    separate library. If you want to include several custom widget
+    plugins in the same library, you must in addition subclass
+    QDesignerCustomWidgetCollectionInterface.
+
+    QDesignerCustomWidgetCollectionInterface contains one single
+    function returning a list of the collection's
+    QDesignerCustomWidgetInterface objects. For example, if you have
+    several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and
+    \c CustomWidgetThree, the class definition may look like this:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 12
+
+    In the class constructor you add the interfaces to your custom
+    widgets to the list which you return in the customWidgets()
+    function:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 13
+
+    Note that instead of exporting each custom widget plugin using the
+    Q_EXPORT_PLUGIN2() macro, you export the entire collection. The
+    Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct
+    the custom widgets. Without this macro, there is no way for \QD to
+    use them.
+
+    \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for
+    Qt Designer}
+*/
+
+/*!
+    \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() {
+
+    Destroys the custom widget collection interface.
+*/
+
+/*!
+    \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const
+
+    Returns a list of interfaces to the collection's custom widgets.
+*/
diff --git a/src/designer/src/lib/uilib/extension.h b/src/designer/src/lib/uilib/extension.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d6754e9e1153f1c9abac1b2bfbfe281de1283f7
--- /dev/null
+++ b/src/designer/src/lib/uilib/extension.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** 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 Designer 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$
+**
+****************************************************************************/
+
+#ifndef EXTENSION_H
+#define EXTENSION_H
+
+#include <QtCore/QString>
+#include <QtCore/QObject>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+#define Q_TYPEID(IFace) QLatin1String(IFace##_iid)
+
+class QAbstractExtensionFactory
+{
+public:
+    virtual ~QAbstractExtensionFactory() {}
+
+    virtual QObject *extension(QObject *object, const QString &iid) const = 0;
+};
+Q_DECLARE_INTERFACE(QAbstractExtensionFactory, "com.trolltech.Qt.QAbstractExtensionFactory")
+
+class QAbstractExtensionManager
+{
+public:
+    virtual ~QAbstractExtensionManager() {}
+
+    virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
+    virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
+
+    virtual QObject *extension(QObject *object, const QString &iid) const = 0;
+};
+Q_DECLARE_INTERFACE(QAbstractExtensionManager, "com.trolltech.Qt.QAbstractExtensionManager")
+
+#if defined(Q_CC_MSVC) && (_MSC_VER < 1300)
+
+template <class T>
+inline T qt_extension_helper(QAbstractExtensionManager *, QObject *, T)
+{ return 0; }
+
+template <class T>
+inline T qt_extension(QAbstractExtensionManager* manager, QObject *object)
+{ return qt_extension_helper(manager, object, T(0)); }
+
+#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) \
+const char * const IFace##_iid = IId; \
+Q_DECLARE_INTERFACE(IFace, IId) \
+template <> inline IFace *qt_extension_helper<IFace *>(QAbstractExtensionManager *manager, QObject *object, IFace *) \
+{ QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return (IFace *)(extension ? extension->qt_metacast(IFace##_iid) : 0); }
+
+#else
+
+template <class T>
+inline T qt_extension(QAbstractExtensionManager* manager, QObject *object)
+{ return 0; }
+
+#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) \
+const char * const IFace##_iid = IId; \
+Q_DECLARE_INTERFACE(IFace, IId) \
+template <> inline IFace *qt_extension<IFace *>(QAbstractExtensionManager *manager, QObject *object) \
+{ QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return extension ? static_cast<IFace *>(extension->qt_metacast(IFace##_iid)) : static_cast<IFace *>(0); }
+
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // EXTENSION_H
diff --git a/src/designer/src/lib/uilib/formbuilder.cpp b/src/designer/src/lib/uilib/formbuilder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5e22ddb998b04b9f0623e248ce765b5e73d5ff72
--- /dev/null
+++ b/src/designer/src/lib/uilib/formbuilder.cpp
@@ -0,0 +1,550 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "customwidget.h"
+#include "formbuilder.h"
+#include "formbuilderextra_p.h"
+#include "ui4_p.h"
+
+#include <QtGui/QtGui>
+#include <QtWidgets/QtWidgets>
+#include <QtCore/QCoreApplication>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal {
+#endif
+
+/*!
+    \class QFormBuilder
+
+    \brief The QFormBuilder class is used to dynamically construct
+    user interfaces from UI files at run-time.
+
+    \inmodule QtDesigner
+
+    The QFormBuilder class provides a mechanism for dynamically
+    creating user interfaces at run-time, based on UI files
+    created with \QD. For example:
+
+    \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp 0
+
+    By including the user interface in the example's resources (\c
+    myForm.qrc), we ensure that it will be present when the example is
+    run:
+
+    \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp 1
+
+    QFormBuilder extends the QAbstractFormBuilder base class with a
+    number of functions that are used to support custom widget
+    plugins:
+
+    \list
+    \o pluginPaths() returns the list of paths that the form builder
+       searches when loading custom widget plugins.
+    \o addPluginPath() allows additional paths to be registered with
+       the form builder.
+    \o setPluginPath() is used to replace the existing list of paths
+       with a list obtained from some other source.
+    \o clearPluginPaths() removes all paths registered with the form
+       builder.
+    \o customWidgets() returns a list of interfaces to plugins that
+       can be used to create new instances of registered custom widgets.
+    \endlist
+
+    The QFormBuilder class is typically used by custom components and
+    applications that embed \QD. Standalone applications that need to
+    dynamically generate user interfaces at run-time use the
+    QUiLoader class, found in the QtUiTools module.
+
+    \sa QAbstractFormBuilder, {QtUiTools Module}
+*/
+
+/*!
+    \fn QFormBuilder::QFormBuilder()
+
+    Constructs a new form builder.
+*/
+
+QFormBuilder::QFormBuilder()
+{
+}
+
+/*!
+    Destroys the form builder.
+*/
+QFormBuilder::~QFormBuilder()
+{
+}
+
+/*!
+    \internal
+*/
+QWidget *QFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget)
+{
+    if (!d->parentWidgetIsSet())
+        d->setParentWidget(parentWidget);
+    // Is this a QLayoutWidget with a margin of 0: Not a known page-based
+    // container and no method for adding pages registered.
+    d->setProcessingLayoutWidget(false);
+    if (ui_widget->attributeClass() == QFormBuilderStrings::instance().qWidgetClass && !ui_widget->hasAttributeNative()
+            && parentWidget
+#ifndef QT_NO_MAINWINDOW
+            && !qobject_cast<QMainWindow *>(parentWidget)
+#endif
+#ifndef QT_NO_TOOLBOX
+            && !qobject_cast<QToolBox *>(parentWidget)
+#endif
+#ifndef QT_NO_STACKEDWIDGET
+            && !qobject_cast<QStackedWidget *>(parentWidget)
+#endif
+#ifndef QT_NO_STACKEDWIDGET
+            && !qobject_cast<QTabWidget *>(parentWidget)
+#endif
+#ifndef QT_NO_SCROLLAREA
+            && !qobject_cast<QScrollArea *>(parentWidget)
+#endif
+#ifndef QT_NO_MDIAREA
+            && !qobject_cast<QMdiArea *>(parentWidget)
+#endif
+#ifndef QT_NO_DOCKWIDGET
+            && !qobject_cast<QDockWidget *>(parentWidget)
+#endif
+        ) {
+        const QString parentClassName = QLatin1String(parentWidget->metaObject()->className());
+        if (!d->isCustomWidgetContainer(parentClassName))
+            d->setProcessingLayoutWidget(true);
+    }
+    return QAbstractFormBuilder::create(ui_widget, parentWidget);
+}
+
+
+/*!
+    \internal
+*/
+QWidget *QFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name)
+{
+    if (widgetName.isEmpty()) {
+        //: Empty class name passed to widget factory method
+        qWarning() << QCoreApplication::translate("QFormBuilder", "An empty class name was passed on to %1 (object name: '%2').").arg(QString::fromUtf8(Q_FUNC_INFO), name);
+        return 0;
+    }
+
+    QWidget *w = 0;
+
+#ifndef QT_NO_TABWIDGET
+    if (qobject_cast<QTabWidget*>(parentWidget))
+        parentWidget = 0;
+#endif
+#ifndef QT_NO_STACKEDWIDGET
+    if (qobject_cast<QStackedWidget*>(parentWidget))
+        parentWidget = 0;
+#endif
+#ifndef QT_NO_TOOLBOX
+    if (qobject_cast<QToolBox*>(parentWidget))
+        parentWidget = 0;
+#endif
+
+    // ### special-casing for Line (QFrame) -- fix for 4.2
+    do {
+        if (widgetName == QFormBuilderStrings::instance().lineClass) {
+            w = new QFrame(parentWidget);
+            static_cast<QFrame*>(w)->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+            break;
+        }
+        const QByteArray widgetNameBA = widgetName.toUtf8();
+        const char *widgetNameC = widgetNameBA.constData();
+        if (w) { // symmetry for macro
+        }
+
+#define DECLARE_LAYOUT(L, C)
+#define DECLARE_COMPAT_WIDGET(W, C)
+#define DECLARE_WIDGET(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(parentWidget); }
+#define DECLARE_WIDGET_1(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(0, parentWidget); }
+
+#include "widgets.table"
+
+#undef DECLARE_COMPAT_WIDGET
+#undef DECLARE_LAYOUT
+#undef DECLARE_WIDGET
+#undef DECLARE_WIDGET_1
+
+        if (w)
+            break;
+
+        // try with a registered custom widget
+        QDesignerCustomWidgetInterface *factory = d->m_customWidgets.value(widgetName);
+        if (factory != 0)
+            w = factory->createWidget(parentWidget);
+    } while(false);
+
+    if (w == 0) { // Attempt to instantiate base class of promoted/custom widgets
+        const QString baseClassName = d->customWidgetBaseClass(widgetName);
+        if (!baseClassName.isEmpty()) {
+            qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.").arg(widgetName, baseClassName);
+            return createWidget(baseClassName, parentWidget, name);
+        }
+    }
+
+    if (w == 0) { // nothing to do
+        qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a widget of the class '%1'.").arg(widgetName);
+        return 0;
+    }
+
+    w->setObjectName(name);
+
+    if (qobject_cast<QDialog *>(w))
+        w->setParent(parentWidget);
+
+    return w;
+}
+
+/*!
+    \internal
+*/
+QLayout *QFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name)
+{
+    QLayout *l = 0;
+
+    QWidget *parentWidget = qobject_cast<QWidget*>(parent);
+    QLayout *parentLayout = qobject_cast<QLayout*>(parent);
+
+    Q_ASSERT(parentWidget || parentLayout);
+
+#define DECLARE_WIDGET(W, C)
+#define DECLARE_COMPAT_WIDGET(W, C)
+
+#define DECLARE_LAYOUT(L, C) \
+    if (layoutName == QLatin1String(#L)) { \
+        Q_ASSERT(l == 0); \
+        l = parentLayout \
+            ? new L() \
+            : new L(parentWidget); \
+    }
+
+#include "widgets.table"
+
+#undef DECLARE_LAYOUT
+#undef DECLARE_COMPAT_WIDGET
+#undef DECLARE_WIDGET
+
+    if (l) {
+        l->setObjectName(name);
+    } else {
+        qWarning() << QCoreApplication::translate("QFormBuilder", "The layout type `%1' is not supported.").arg(layoutName);
+    }
+
+    return l;
+}
+
+/*!
+    \internal
+*/
+bool QFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout)
+{
+    return QAbstractFormBuilder::addItem(ui_item, item, layout);
+}
+
+/*!
+    \internal
+*/
+bool QFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
+{
+    return QAbstractFormBuilder::addItem(ui_widget, widget, parentWidget);
+}
+
+/*!
+    \internal
+*/
+QWidget *QFormBuilder::widgetByName(QWidget *topLevel, const QString &name)
+{
+    Q_ASSERT(topLevel);
+    if (topLevel->objectName() == name)
+        return topLevel;
+
+    return topLevel->findChild<QWidget*>(name);
+}
+
+static QObject *objectByName(QWidget *topLevel, const QString &name)
+{
+    Q_ASSERT(topLevel);
+    if (topLevel->objectName() == name)
+        return topLevel;
+
+    return topLevel->findChild<QObject*>(name);
+}
+
+/*!
+    \internal
+*/
+void QFormBuilder::createConnections(DomConnections *ui_connections, QWidget *widget)
+{
+    typedef QList<DomConnection*> DomConnectionList;
+    Q_ASSERT(widget != 0);
+
+    if (ui_connections == 0)
+        return;
+
+    const DomConnectionList connections = ui_connections->elementConnection();
+    if (!connections.empty()) {
+        const DomConnectionList::const_iterator cend = connections.constEnd();
+        for (DomConnectionList::const_iterator it = connections.constBegin(); it != cend; ++it) {
+
+            QObject *sender = objectByName(widget, (*it)->elementSender());
+            QObject *receiver = objectByName(widget, (*it)->elementReceiver());
+            if (!sender || !receiver)
+                continue;
+
+            QByteArray sig = (*it)->elementSignal().toUtf8();
+            sig.prepend("2");
+            QByteArray sl = (*it)->elementSlot().toUtf8();
+            sl.prepend("1");
+            QObject::connect(sender, sig, receiver, sl);
+        }
+    }
+}
+
+/*!
+    \internal
+*/
+QWidget *QFormBuilder::create(DomUI *ui, QWidget *parentWidget)
+{
+    return QAbstractFormBuilder::create(ui, parentWidget);
+}
+
+/*!
+    \internal
+*/
+QLayout *QFormBuilder::create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget)
+{
+    // Is this a temporary layout widget used to represent QLayout hierarchies in Designer?
+    // Set its margins to 0.
+    bool layoutWidget = d->processingLayoutWidget();
+    QLayout *l = QAbstractFormBuilder::create(ui_layout, layout, parentWidget);
+    if (layoutWidget) {
+        const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+        int left, top, right, bottom;
+        left = top = right = bottom = 0;
+        const DomPropertyHash properties = propertyMap(ui_layout->elementProperty());
+
+        if (DomProperty *prop = properties.value(strings.leftMarginProperty))
+            left = prop->elementNumber();
+
+        if (DomProperty *prop = properties.value(strings.topMarginProperty))
+            top = prop->elementNumber();
+
+        if (DomProperty *prop = properties.value(strings.rightMarginProperty))
+            right = prop->elementNumber();
+
+        if (DomProperty *prop = properties.value(strings.bottomMarginProperty))
+            bottom = prop->elementNumber();
+
+        l->setContentsMargins(left, top, right, bottom);
+        d->setProcessingLayoutWidget(false);
+    }
+    return l;
+}
+
+/*!
+    \internal
+*/
+QLayoutItem *QFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget)
+{
+    return QAbstractFormBuilder::create(ui_layoutItem, layout, parentWidget);
+}
+
+/*!
+    \internal
+*/
+QAction *QFormBuilder::create(DomAction *ui_action, QObject *parent)
+{
+    return QAbstractFormBuilder::create(ui_action, parent);
+}
+
+/*!
+    \internal
+*/
+QActionGroup *QFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent)
+{
+    return QAbstractFormBuilder::create(ui_action_group, parent);
+}
+
+/*!
+    Returns the list of paths the form builder searches for plugins.
+
+    \sa addPluginPath()
+*/
+QStringList QFormBuilder::pluginPaths() const
+{
+    return d->m_pluginPaths;
+}
+
+/*!
+    Clears the list of paths that the form builder uses to search for
+    custom widget plugins.
+
+    \sa pluginPaths()
+*/
+void QFormBuilder::clearPluginPaths()
+{
+    d->m_pluginPaths.clear();
+    updateCustomWidgets();
+}
+
+/*!
+    Adds a new plugin path specified by \a pluginPath to the list of
+    paths that will be searched by the form builder when loading a
+    custom widget plugin.
+
+    \sa setPluginPath(), clearPluginPaths()
+*/
+void QFormBuilder::addPluginPath(const QString &pluginPath)
+{
+    d->m_pluginPaths.append(pluginPath);
+    updateCustomWidgets();
+}
+
+/*!
+    Sets the list of plugin paths to the list specified by \a pluginPaths.
+
+    \sa addPluginPath()
+*/
+void QFormBuilder::setPluginPath(const QStringList &pluginPaths)
+{
+    d->m_pluginPaths = pluginPaths;
+    updateCustomWidgets();
+}
+
+static void insertPlugins(QObject *o, QMap<QString, QDesignerCustomWidgetInterface*> *customWidgets)
+{
+    // step 1) try with a normal plugin
+    if (QDesignerCustomWidgetInterface *iface = qobject_cast<QDesignerCustomWidgetInterface *>(o)) {
+        customWidgets->insert(iface->name(), iface);
+        return;
+    }
+    // step 2) try with a collection of plugins
+    if (QDesignerCustomWidgetCollectionInterface *c = qobject_cast<QDesignerCustomWidgetCollectionInterface *>(o)) {
+        foreach (QDesignerCustomWidgetInterface *iface, c->customWidgets())
+            customWidgets->insert(iface->name(), iface);
+    }
+}
+
+/*!
+    \internal
+*/
+void QFormBuilder::updateCustomWidgets()
+{
+    d->m_customWidgets.clear();
+
+    foreach (const QString &path, d->m_pluginPaths) {
+        const QDir dir(path);
+        const QStringList candidates = dir.entryList(QDir::Files);
+
+        foreach (const QString &plugin, candidates) {
+            if (!QLibrary::isLibrary(plugin))
+                continue;
+
+            QString loaderPath = path;
+            loaderPath += QLatin1Char('/');
+            loaderPath += plugin;
+
+            QPluginLoader loader(loaderPath);
+            if (loader.load())
+                insertPlugins(loader.instance(), &d->m_customWidgets);
+        }
+    }
+    // Check statically linked plugins
+    const QObjectList staticPlugins = QPluginLoader::staticInstances();
+    if (!staticPlugins.empty())
+        foreach (QObject *o, staticPlugins)
+            insertPlugins(o, &d->m_customWidgets);
+}
+
+/*!
+    \fn QList<QDesignerCustomWidgetInterface*> QFormBuilder::customWidgets() const
+
+    Returns a list of the available plugins.
+*/
+QList<QDesignerCustomWidgetInterface*> QFormBuilder::customWidgets() const
+{
+    return d->m_customWidgets.values();
+}
+
+/*!
+    \internal
+*/
+
+void QFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties)
+{
+    typedef QList<DomProperty*> DomPropertyList;
+
+    if (properties.empty())
+        return;
+
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+
+    const DomPropertyList::const_iterator cend = properties.constEnd();
+    for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) {
+        const QVariant v = toVariant(o->metaObject(), *it);
+        if (v.isNull())
+            continue;
+
+        const QString attributeName = (*it)->attributeName();
+        const bool isWidget = o->isWidgetType();
+        if (isWidget && o->parent() == d->parentWidget() && attributeName == strings.geometryProperty) {
+            // apply only the size part of a geometry for the root widget
+            static_cast<QWidget*>(o)->resize(qvariant_cast<QRect>(v).size());
+        } else if (d->applyPropertyInternally(o, attributeName, v)) {
+        } else if (isWidget && !qstrcmp("QFrame", o->metaObject()->className ()) && attributeName == strings.orientationProperty) {
+            // ### special-casing for Line (QFrame) -- try to fix me
+            o->setProperty("frameShape", v); // v is of QFrame::Shape enum
+        } else {
+            o->setProperty(attributeName.toUtf8(), v);
+        }
+    }
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+} // namespace QFormInternal
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/formbuilder.h b/src/designer/src/lib/uilib/formbuilder.h
new file mode 100644
index 0000000000000000000000000000000000000000..b94db06ebd1f673da432c88c10e176c8e4285344
--- /dev/null
+++ b/src/designer/src/lib/uilib/formbuilder.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef FORMBUILDER_H
+#define FORMBUILDER_H
+
+#include "uilib_global.h"
+#include "abstractformbuilder.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+#if 0
+// pragma for syncqt, don't remove.
+
+#pragma qt_class(QFormBuilder)
+#endif
+
+class QDesignerCustomWidgetInterface;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class QDESIGNER_UILIB_EXPORT QFormBuilder: public QAbstractFormBuilder
+{
+public:
+    QFormBuilder();
+    virtual ~QFormBuilder();
+
+    QStringList pluginPaths() const;
+
+    void clearPluginPaths();
+    void addPluginPath(const QString &pluginPath);
+    void setPluginPath(const QStringList &pluginPaths);
+
+    QList<QDesignerCustomWidgetInterface*> customWidgets() const;
+
+protected:
+    virtual QWidget *create(DomUI *ui, QWidget *parentWidget);
+    virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget);
+    virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget);
+    virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget);
+    virtual QAction *create(DomAction *ui_action, QObject *parent);
+    virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent);
+
+    virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name);
+    virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name);
+
+    virtual void createConnections(DomConnections *connections, QWidget *widget);
+
+    virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout);
+    virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
+
+    virtual void updateCustomWidgets();
+    virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties);
+
+    static QWidget *widgetByName(QWidget *topLevel, const QString &name);
+
+private:
+};
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // FORMBUILDER_H
diff --git a/src/designer/src/lib/uilib/formbuilderextra.cpp b/src/designer/src/lib/uilib/formbuilderextra.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d34a20bffae306386258092879ec635ce28f56f
--- /dev/null
+++ b/src/designer/src/lib/uilib/formbuilderextra.cpp
@@ -0,0 +1,533 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "formbuilderextra_p.h"
+#include "abstractformbuilder.h"
+#include "resourcebuilder_p.h"
+#include "textbuilder_p.h"
+#include "ui4_p.h"
+
+#include <QtWidgets/QLabel>
+#include <QtWidgets/QBoxLayout>
+#include <QtWidgets/QGridLayout>
+
+#include <QtCore/QVariant>
+#include <QtCore/qdebug.h>
+#include <QtCore/QTextStream>
+#include <QtCore/QStringList>
+#include <QtCore/QCoreApplication>
+
+#include <limits.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal {
+#endif
+
+void uiLibWarning(const QString &message) {
+    qWarning("Designer: %s", qPrintable(message));
+}
+
+
+QFormBuilderExtra::CustomWidgetData::CustomWidgetData() :
+    isContainer(false)
+{
+}
+
+QFormBuilderExtra::CustomWidgetData::CustomWidgetData(const DomCustomWidget *dcw) :
+    addPageMethod(dcw->elementAddPageMethod()),
+    baseClass(dcw->elementExtends()),
+    isContainer(dcw->hasElementContainer() && dcw->elementContainer() != 0)
+{
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    if (const DomScript *domScript = dcw->elementScript())
+        script = domScript->text();
+#endif
+}
+
+QFormBuilderExtra::QFormBuilderExtra() :
+    m_defaultMargin(INT_MIN),
+    m_defaultSpacing(INT_MIN),
+    m_language(QLatin1String("c++")),
+    m_layoutWidget(false),
+    m_resourceBuilder(0),
+    m_textBuilder(0)
+{
+}
+
+QFormBuilderExtra::~QFormBuilderExtra()
+{
+    clearResourceBuilder();
+    clearTextBuilder();
+}
+
+void QFormBuilderExtra::clear()
+{
+    m_buddies.clear();
+    m_parentWidget = 0;
+    m_parentWidgetIsSet = false;
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    m_FormScriptRunner.clearErrors();
+#endif
+    m_customWidgetDataHash.clear();
+    m_buttonGroups.clear();
+}
+
+
+bool QFormBuilderExtra::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value)
+{
+    // Store buddies and apply them later on as the widgets might not exist yet.
+    QLabel *label = qobject_cast<QLabel*>(o);
+    if (!label || propertyName != QFormBuilderStrings::instance().buddyProperty)
+        return false;
+
+    m_buddies.insert(label, value.toString());
+    return true;
+}
+
+void QFormBuilderExtra::applyInternalProperties() const
+{
+    if (m_buddies.empty())
+        return;
+
+    const BuddyHash::const_iterator cend = m_buddies.constEnd();
+    for (BuddyHash::const_iterator it = m_buddies.constBegin(); it != cend; ++it )
+        applyBuddy(it.value(), BuddyApplyAll, it.key());
+}
+
+bool QFormBuilderExtra::applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label)
+{
+    if (buddyName.isEmpty()) {
+        label->setBuddy(0);
+        return false;
+    }
+
+    const QWidgetList widgets = label->topLevelWidget()->findChildren<QWidget*>(buddyName);
+    if (widgets.empty()) {
+        label->setBuddy(0);
+        return false;
+    }
+
+    const QWidgetList::const_iterator cend = widgets.constEnd();
+    for ( QWidgetList::const_iterator it =  widgets.constBegin(); it !=  cend; ++it) {
+        if (applyMode == BuddyApplyAll || !(*it)->isHidden()) {
+            label->setBuddy(*it);
+            return true;
+        }
+    }
+
+    label->setBuddy(0);
+    return false;
+}
+
+const QPointer<QWidget> &QFormBuilderExtra::parentWidget() const
+{
+    return m_parentWidget;
+}
+
+bool QFormBuilderExtra::parentWidgetIsSet() const
+{
+    return m_parentWidgetIsSet;
+}
+
+void QFormBuilderExtra::setParentWidget(const QPointer<QWidget> &w)
+{
+    // Parent widget requires special handling of the geometry property.
+    m_parentWidget = w;
+    m_parentWidgetIsSet = true;
+}
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+QFormScriptRunner &QFormBuilderExtra::formScriptRunner()
+{
+    return m_FormScriptRunner;
+}
+
+QString QFormBuilderExtra::customWidgetScript(const QString &className) const
+{
+    const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
+    if (it != m_customWidgetDataHash.constEnd())
+        return it.value().script;
+    return QString();
+}
+
+#endif
+
+void QFormBuilderExtra::storeCustomWidgetData(const QString &className, const DomCustomWidget *d)
+{
+    if (d)
+        m_customWidgetDataHash.insert(className, CustomWidgetData(d));
+}
+
+QString QFormBuilderExtra::customWidgetBaseClass(const QString &className) const
+{
+    const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
+    if (it != m_customWidgetDataHash.constEnd())
+            return it.value().baseClass;
+    return QString();
+}
+
+QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const
+{
+    const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
+    if (it != m_customWidgetDataHash.constEnd())
+        return it.value().addPageMethod;
+    return QString();
+}
+
+bool QFormBuilderExtra::isCustomWidgetContainer(const QString &className) const
+{
+    const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
+    if (it != m_customWidgetDataHash.constEnd())
+        return it.value().isContainer;
+    return false;
+}
+
+void QFormBuilderExtra::setProcessingLayoutWidget(bool processing)
+{
+    m_layoutWidget = processing;
+}
+
+ bool QFormBuilderExtra::processingLayoutWidget() const
+{
+    return m_layoutWidget;
+}
+void QFormBuilderExtra::setResourceBuilder(QResourceBuilder *builder)
+{
+    if (m_resourceBuilder == builder)
+        return;
+    clearResourceBuilder();
+    m_resourceBuilder = builder;
+}
+
+QResourceBuilder *QFormBuilderExtra::resourceBuilder() const
+{
+    return m_resourceBuilder;
+}
+
+void QFormBuilderExtra::clearResourceBuilder()
+{
+    if (m_resourceBuilder) {
+        delete m_resourceBuilder;
+        m_resourceBuilder = 0;
+    }
+}
+
+void QFormBuilderExtra::setTextBuilder(QTextBuilder *builder)
+{
+    if (m_textBuilder == builder)
+        return;
+    clearTextBuilder();
+    m_textBuilder = builder;
+}
+
+QTextBuilder *QFormBuilderExtra::textBuilder() const
+{
+    return m_textBuilder;
+}
+
+void QFormBuilderExtra::clearTextBuilder()
+{
+    if (m_textBuilder) {
+        delete m_textBuilder;
+        m_textBuilder = 0;
+    }
+}
+
+void QFormBuilderExtra::registerButtonGroups(const DomButtonGroups *domGroups)
+{
+    typedef QList<DomButtonGroup*> DomButtonGroupList;
+    const DomButtonGroupList domGroupList = domGroups->elementButtonGroup();
+    const DomButtonGroupList::const_iterator cend = domGroupList.constEnd();
+    for (DomButtonGroupList::const_iterator it = domGroupList.constBegin(); it != cend; ++it) {
+        DomButtonGroup *domGroup = *it;
+        m_buttonGroups.insert(domGroup->attributeName(), ButtonGroupEntry(domGroup, 0));
+    }
+}
+
+// Utilities for parsing per-cell integer properties that have setters and
+//  getters of the form 'setX(int idx, int value)' and 'x(int index)'
+// (converting them to comma-separated string lists and back).
+// Used for layout stretch and grid per-row/column properties.
+
+// Format a list of cell-properties of one dimension as a ','-separated list
+template <class Layout>
+inline QString perCellPropertyToString(const Layout *l, int count, int (Layout::*getter)(int) const)
+{
+    if (count == 0)
+        return QString();
+    QString rc;
+    {
+        QTextStream str(&rc);
+        for (int i = 0; i < count; i++) {
+            if (i)
+                str << QLatin1Char(',');
+            str << (l->*getter)(i);
+        }
+    }
+    return rc;
+}
+
+// Clear the property, set all cells to 0
+
+template <class Layout>
+inline void clearPerCellValue(Layout *l, int count, void (Layout::*setter)(int,int), int value = 0)
+{
+    for (int i = 0; i < count; i++)
+        (l->*setter)(i, value);
+}
+
+// Parse and set the property from a comma-separated list
+
+template <class Layout>
+inline bool parsePerCellProperty(Layout *l, int count, void (Layout::*setter)(int,int), const QString &s, int defaultValue = 0)
+{
+    if (s.isEmpty()) {
+        clearPerCellValue(l, count, setter, defaultValue);
+        return true;
+    }
+    const QStringList list = s.split(QLatin1Char(','));
+    if (list.empty()) {
+        clearPerCellValue(l, count, setter, defaultValue);
+        return true;
+    }
+    // Apply all values contained in list
+    const int ac = qMin(count, list.size());
+    bool ok;
+    int i = 0;
+    for ( ; i < ac; i++) {
+        const int value = list.at(i).toInt(&ok);
+        if (!ok || value < 0)
+            return false;
+        (l->*setter)(i, value);
+    }
+    // Clear rest
+    for ( ; i < count; i++)
+        (l->*setter)(i, defaultValue);
+    return true;
+}
+
+// Read and write stretch
+static QString msgInvalidStretch(const QString &objectName, const QString &stretch)
+{
+    //: Parsing layout stretch values
+    return QCoreApplication::translate("FormBuilder", "Invalid stretch value for '%1': '%2'").arg(objectName, stretch);
+}
+
+QString QFormBuilderExtra::boxLayoutStretch(const QBoxLayout *box)
+{
+     return perCellPropertyToString(box, box->count(), &QBoxLayout::stretch);
+}
+
+bool QFormBuilderExtra::setBoxLayoutStretch(const QString &s, QBoxLayout *box)
+{
+    const bool rc = parsePerCellProperty(box, box->count(), &QBoxLayout::setStretch, s);
+    if (!rc)
+        uiLibWarning(msgInvalidStretch(box->objectName(), s));
+    return rc;
+}
+
+void QFormBuilderExtra::clearBoxLayoutStretch(QBoxLayout *box)
+{
+    clearPerCellValue(box, box->count(), &QBoxLayout::setStretch);
+}
+
+QString QFormBuilderExtra::gridLayoutRowStretch(const QGridLayout *grid)
+{
+    return perCellPropertyToString(grid, grid->rowCount(), &QGridLayout::rowStretch);
+}
+
+bool QFormBuilderExtra::setGridLayoutRowStretch(const QString &s, QGridLayout *grid)
+{
+    const bool rc = parsePerCellProperty(grid, grid->rowCount(), &QGridLayout::setRowStretch, s);
+    if (!rc)
+        uiLibWarning(msgInvalidStretch(grid->objectName(), s));
+    return rc;
+}
+
+void QFormBuilderExtra::clearGridLayoutRowStretch(QGridLayout *grid)
+{
+    clearPerCellValue(grid, grid->rowCount(), &QGridLayout::setRowStretch);
+}
+
+QString QFormBuilderExtra::gridLayoutColumnStretch(const QGridLayout *grid)
+{
+    return perCellPropertyToString(grid, grid->columnCount(), &QGridLayout::columnStretch);
+}
+
+bool QFormBuilderExtra::setGridLayoutColumnStretch(const QString &s, QGridLayout *grid)
+{
+    const bool rc = parsePerCellProperty(grid, grid->columnCount(), &QGridLayout::setColumnStretch, s);
+    if (!rc)
+        uiLibWarning(msgInvalidStretch(grid->objectName(), s));
+    return rc;
+}
+
+void QFormBuilderExtra::clearGridLayoutColumnStretch(QGridLayout *grid)
+{
+    clearPerCellValue(grid, grid->columnCount(), &QGridLayout::setColumnStretch);
+}
+
+// Read and write grid layout row/column size limits
+
+static QString msgInvalidMinimumSize(const QString &objectName, const QString &ms)
+{
+    //: Parsing grid layout minimum size values
+    return QCoreApplication::translate("FormBuilder", "Invalid minimum size for '%1': '%2'").arg(objectName, ms);
+}
+
+QString QFormBuilderExtra::gridLayoutRowMinimumHeight(const QGridLayout *grid)
+{
+    return perCellPropertyToString(grid, grid->rowCount(), &QGridLayout::rowMinimumHeight);
+}
+
+bool QFormBuilderExtra::setGridLayoutRowMinimumHeight(const QString &s, QGridLayout *grid)
+{
+    const bool rc = parsePerCellProperty(grid, grid->rowCount(), &QGridLayout::setRowMinimumHeight, s);
+    if (!rc)
+        uiLibWarning(msgInvalidMinimumSize(grid->objectName(), s));
+    return rc;
+}
+
+void QFormBuilderExtra::clearGridLayoutRowMinimumHeight(QGridLayout *grid)
+{
+     clearPerCellValue(grid, grid->rowCount(), &QGridLayout::setRowMinimumHeight);
+}
+
+QString QFormBuilderExtra::gridLayoutColumnMinimumWidth(const QGridLayout *grid)
+{
+    return perCellPropertyToString(grid, grid->columnCount(), &QGridLayout::columnMinimumWidth);
+}
+
+bool QFormBuilderExtra::setGridLayoutColumnMinimumWidth(const QString &s, QGridLayout *grid)
+{
+    const bool rc = parsePerCellProperty(grid, grid->columnCount(), &QGridLayout::setColumnMinimumWidth, s);
+    if (!rc)
+        uiLibWarning(msgInvalidMinimumSize(grid->objectName(), s));
+    return rc;
+}
+
+void QFormBuilderExtra::clearGridLayoutColumnMinimumWidth(QGridLayout *grid)
+{
+    clearPerCellValue(grid, grid->columnCount(), &QGridLayout::setColumnMinimumWidth);
+}
+
+// ------------ QFormBuilderStrings
+
+QFormBuilderStrings::QFormBuilderStrings() :
+    buddyProperty(QLatin1String("buddy")),
+    cursorProperty(QLatin1String("cursor")),
+    objectNameProperty(QLatin1String("objectName")),
+    trueValue(QLatin1String("true")),
+    falseValue(QLatin1String("false")),
+    horizontalPostFix(QLatin1String("Horizontal")),
+    separator(QLatin1String("separator")),
+    defaultTitle(QLatin1String("Page")),
+    titleAttribute(QLatin1String("title")),
+    labelAttribute(QLatin1String("label")),
+    toolTipAttribute(QLatin1String("toolTip")),
+    whatsThisAttribute(QLatin1String("whatsThis")),
+    flagsAttribute(QLatin1String("flags")),
+    iconAttribute(QLatin1String("icon")),
+    pixmapAttribute(QLatin1String("pixmap")),
+    textAttribute(QLatin1String("text")),
+    currentIndexProperty(QLatin1String("currentIndex")),
+    toolBarAreaAttribute(QLatin1String("toolBarArea")),
+    toolBarBreakAttribute(QLatin1String("toolBarBreak")),
+    dockWidgetAreaAttribute(QLatin1String("dockWidgetArea")),
+    marginProperty(QLatin1String("margin")),
+    spacingProperty(QLatin1String("spacing")),
+    leftMarginProperty(QLatin1String("leftMargin")),
+    topMarginProperty(QLatin1String("topMargin")),
+    rightMarginProperty(QLatin1String("rightMargin")),
+    bottomMarginProperty(QLatin1String("bottomMargin")),
+    horizontalSpacingProperty(QLatin1String("horizontalSpacing")),
+    verticalSpacingProperty(QLatin1String("verticalSpacing")),
+    sizeHintProperty(QLatin1String("sizeHint")),
+    sizeTypeProperty(QLatin1String("sizeType")),
+    orientationProperty(QLatin1String("orientation")),
+    styleSheetProperty(QLatin1String("styleSheet")),
+    qtHorizontal(QLatin1String("Qt::Horizontal")),
+    qtVertical(QLatin1String("Qt::Vertical")),
+    currentRowProperty(QLatin1String("currentRow")),
+    tabSpacingProperty(QLatin1String("tabSpacing")),
+    qWidgetClass(QLatin1String("QWidget")),
+    lineClass(QLatin1String("Line")),
+    geometryProperty(QLatin1String("geometry")),
+    scriptWidgetVariable(QLatin1String("widget")),
+    scriptChildWidgetsVariable(QLatin1String("childWidgets"))
+{
+    itemRoles.append(qMakePair(Qt::FontRole, QString::fromLatin1("font")));
+    itemRoles.append(qMakePair(Qt::TextAlignmentRole, QString::fromLatin1("textAlignment")));
+    itemRoles.append(qMakePair(Qt::BackgroundRole, QString::fromLatin1("background")));
+    itemRoles.append(qMakePair(Qt::ForegroundRole, QString::fromLatin1("foreground")));
+    itemRoles.append(qMakePair(Qt::CheckStateRole, QString::fromLatin1("checkState")));
+
+    foreach (const RoleNName &it, itemRoles)
+        treeItemRoleHash.insert(it.second, it.first);
+
+    itemTextRoles.append(qMakePair(qMakePair(Qt::EditRole, Qt::DisplayPropertyRole),
+                                   textAttribute)); // This must be first for the loop below
+    itemTextRoles.append(qMakePair(qMakePair(Qt::ToolTipRole, Qt::ToolTipPropertyRole),
+                                   toolTipAttribute));
+    itemTextRoles.append(qMakePair(qMakePair(Qt::StatusTipRole, Qt::StatusTipPropertyRole),
+                                   QString::fromLatin1("statusTip")));
+    itemTextRoles.append(qMakePair(qMakePair(Qt::WhatsThisRole, Qt::WhatsThisPropertyRole),
+                                   whatsThisAttribute));
+
+    // Note: this skips the first item!
+    QList<TextRoleNName>::const_iterator it = itemTextRoles.constBegin(), end = itemTextRoles.constEnd();
+    while (++it != end)
+        treeItemTextRoleHash.insert(it->second, it->first);
+}
+
+const QFormBuilderStrings &QFormBuilderStrings::instance()
+{
+    static const QFormBuilderStrings rc;
+    return rc;
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+} // namespace QFormInternal
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/formbuilderextra_p.h b/src/designer/src/lib/uilib/formbuilderextra_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..20516a5489d558a39260c3a5e4b8d162198a6c92
--- /dev/null
+++ b/src/designer/src/lib/uilib/formbuilderextra_p.h
@@ -0,0 +1,276 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef ABSTRACTFORMBUILDERPRIVATE_H
+#define ABSTRACTFORMBUILDERPRIVATE_H
+
+//
+//  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.
+//
+
+#include "uilib_global.h"
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+#    include "formscriptrunner_p.h"
+#endif
+
+#include <QtCore/QHash>
+#include <QtCore/QPointer>
+#include <QtCore/QStringList>
+#include <QtCore/QMap>
+#include <QtCore/QDir>
+
+QT_BEGIN_NAMESPACE
+
+class QDesignerCustomWidgetInterface;
+class QObject;
+class QVariant;
+class QWidget;
+class QObject;
+class QLabel;
+class QButtonGroup;
+class QBoxLayout;
+class QGridLayout;
+class QAction;
+class QActionGroup;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class DomButtonGroups;
+class DomButtonGroup;
+class DomCustomWidget;
+
+class QAbstractFormBuilder;
+class QResourceBuilder;
+class QTextBuilder;
+
+class QDESIGNER_UILIB_EXPORT QFormBuilderExtra
+{
+public:
+    QFormBuilderExtra();
+    ~QFormBuilderExtra();
+
+    struct CustomWidgetData {
+        CustomWidgetData();
+        explicit CustomWidgetData(const DomCustomWidget *dc);
+
+        QString addPageMethod;
+        QString script;
+        QString baseClass;
+        bool isContainer;
+    };
+
+    void clear();
+
+    bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
+
+    enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
+
+    void applyInternalProperties() const;
+    static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label);
+
+    const QPointer<QWidget> &parentWidget() const;
+    bool parentWidgetIsSet() const;
+    void setParentWidget(const QPointer<QWidget> &w);
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    QFormScriptRunner &formScriptRunner();
+    QString customWidgetScript(const QString &className) const;
+#endif
+
+    void setProcessingLayoutWidget(bool processing);
+    bool processingLayoutWidget() const;
+
+    void setResourceBuilder(QResourceBuilder *builder);
+    QResourceBuilder *resourceBuilder() const;
+
+    void setTextBuilder(QTextBuilder *builder);
+    QTextBuilder *textBuilder() const;
+
+    void storeCustomWidgetData(const QString &className, const DomCustomWidget *d);
+    QString customWidgetAddPageMethod(const QString &className) const;
+    QString customWidgetBaseClass(const QString &className) const;
+    bool isCustomWidgetContainer(const QString &className) const;
+
+    // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group
+    void registerButtonGroups(const DomButtonGroups *groups);
+
+    typedef QPair<DomButtonGroup *, QButtonGroup*> ButtonGroupEntry;
+    typedef QHash<QString, ButtonGroupEntry> ButtonGroupHash;
+    const ButtonGroupHash &buttonGroups() const { return m_buttonGroups; }
+    ButtonGroupHash &buttonGroups()  { return m_buttonGroups; }
+
+    // return stretch as a comma-separated list
+    static QString boxLayoutStretch(const QBoxLayout*);
+    // apply stretch
+    static bool setBoxLayoutStretch(const QString &, QBoxLayout*);
+    static void clearBoxLayoutStretch(QBoxLayout*);
+
+    static QString gridLayoutRowStretch(const QGridLayout *);
+    static bool setGridLayoutRowStretch(const QString &, QGridLayout *);
+    static void clearGridLayoutRowStretch(QGridLayout *);
+
+    static QString gridLayoutColumnStretch(const QGridLayout *);
+    static bool setGridLayoutColumnStretch(const QString &, QGridLayout *);
+    static void clearGridLayoutColumnStretch(QGridLayout *);
+
+    // return the row/column sizes as  comma-separated lists
+    static QString gridLayoutRowMinimumHeight(const QGridLayout *);
+    static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *);
+    static void clearGridLayoutRowMinimumHeight(QGridLayout *);
+
+    static QString gridLayoutColumnMinimumWidth(const QGridLayout *);
+    static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *);
+    static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
+
+    QStringList m_pluginPaths;
+    QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
+
+    QHash<QObject*, bool> m_laidout;
+    QHash<QString, QAction*> m_actions;
+    QHash<QString, QActionGroup*> m_actionGroups;
+    int m_defaultMargin;
+    int m_defaultSpacing;
+    QDir m_workingDirectory;
+    QString m_errorString;
+    QString m_language;
+
+private:
+    void clearResourceBuilder();
+    void clearTextBuilder();
+
+    typedef QHash<QLabel*, QString> BuddyHash;
+    BuddyHash m_buddies;
+
+#ifndef QT_FORMBUILDER_NO_SCRIPT
+    QFormScriptRunner m_FormScriptRunner;
+#endif
+
+    QHash<QString, CustomWidgetData> m_customWidgetDataHash;
+
+    ButtonGroupHash m_buttonGroups;
+
+    bool m_layoutWidget;
+    QResourceBuilder *m_resourceBuilder;
+    QTextBuilder *m_textBuilder;
+
+    QPointer<QWidget> m_parentWidget;
+    bool m_parentWidgetIsSet;
+};
+
+void uiLibWarning(const QString &message);
+
+// Struct with static accessor that provides most strings used in the form builder.
+struct QDESIGNER_UILIB_EXPORT QFormBuilderStrings {
+    QFormBuilderStrings();
+
+    static const QFormBuilderStrings &instance();
+
+    const QString buddyProperty;
+    const QString cursorProperty;
+    const QString objectNameProperty;
+    const QString trueValue;
+    const QString falseValue;
+    const QString horizontalPostFix;
+    const QString separator;
+    const QString defaultTitle;
+    const QString titleAttribute;
+    const QString labelAttribute;
+    const QString toolTipAttribute;
+    const QString whatsThisAttribute;
+    const QString flagsAttribute;
+    const QString iconAttribute;
+    const QString pixmapAttribute;
+    const QString textAttribute;
+    const QString currentIndexProperty;
+    const QString toolBarAreaAttribute;
+    const QString toolBarBreakAttribute;
+    const QString dockWidgetAreaAttribute;
+    const QString marginProperty;
+    const QString spacingProperty;
+    const QString leftMarginProperty;
+    const QString topMarginProperty;
+    const QString rightMarginProperty;
+    const QString bottomMarginProperty;
+    const QString horizontalSpacingProperty;
+    const QString verticalSpacingProperty;
+    const QString sizeHintProperty;
+    const QString sizeTypeProperty;
+    const QString orientationProperty;
+    const QString styleSheetProperty;
+    const QString qtHorizontal;
+    const QString qtVertical;
+    const QString currentRowProperty;
+    const QString tabSpacingProperty;
+    const QString qWidgetClass;
+    const QString lineClass;
+    const QString geometryProperty;
+    const QString scriptWidgetVariable;
+    const QString scriptChildWidgetsVariable;
+
+    typedef QPair<Qt::ItemDataRole, QString> RoleNName;
+    QList<RoleNName> itemRoles;
+    QHash<QString, Qt::ItemDataRole> treeItemRoleHash;
+
+    // first.first is primary role, first.second is shadow role.
+    // Shadow is used for either the translation source or the designer
+    // representation of the string value.
+    typedef QPair<QPair<Qt::ItemDataRole, Qt::ItemDataRole>, QString> TextRoleNName;
+    QList<TextRoleNName> itemTextRoles;
+    QHash<QString, QPair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash;
+};
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // ABSTRACTFORMBUILDERPRIVATE_H
diff --git a/src/designer/src/lib/uilib/formscriptrunner.cpp b/src/designer/src/lib/uilib/formscriptrunner.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8efb12f9e3c9b57367aab18a4cf9d7eac4965a5d
--- /dev/null
+++ b/src/designer/src/lib/uilib/formscriptrunner.cpp
@@ -0,0 +1,208 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "formscriptrunner_p.h"
+#include "formbuilderextra_p.h"
+#include "ui4_p.h"
+
+#include <QtScript/QScriptEngine>
+#include <QtWidgets/QWidget>
+#include <QtCore/QDebug>
+#include <QtCore/QCoreApplication>
+
+QT_BEGIN_NAMESPACE
+
+namespace {
+    enum { debugFormScriptRunner = 0 };
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal {
+#endif
+
+class  QFormScriptRunner::QFormScriptRunnerPrivate {
+public:
+    QFormScriptRunnerPrivate() : m_options(DisableScripts) {}
+    void clearErrors() { m_errors.clear(); }
+
+    bool run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage);
+
+    static void initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine);
+    static QString engineError(QScriptEngine &scriptEngine);
+
+    Options options() const { return m_options; }
+    void setOptions(Options options) { m_options = options; }
+
+    Errors errors() const { return m_errors; }
+private:
+    QScriptEngine m_scriptEngine;
+    Options m_options;
+    Errors m_errors;
+};
+
+bool QFormScriptRunner::QFormScriptRunnerPrivate::run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage) {
+    bool rc = false;
+    initializeEngine(widget, children, m_scriptEngine);
+
+    do {
+        m_scriptEngine.evaluate(script);
+        if (m_scriptEngine.hasUncaughtException ()) {
+            *errorMessage = QCoreApplication::tr("Exception at line %1: %2").arg(m_scriptEngine.uncaughtExceptionLineNumber()).arg(engineError(m_scriptEngine));
+            break;
+        }
+        rc = true;
+    } while (false);
+    m_scriptEngine.popContext();
+
+    if (!rc) {
+        Error error;
+        error.objectName = widget->objectName();
+        error.script = script;
+        error.errorMessage = *errorMessage;
+        m_errors.push_back(error);
+    }
+    return rc;
+}
+
+void QFormScriptRunner::QFormScriptRunnerPrivate::initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine) {
+    // Populate the script variables. This pushes a context which must be popped.
+    QScriptContext *ctx = scriptEngine.pushContext();
+    QScriptValue widgetObject =  scriptEngine.newQObject(w);
+    QScriptValue childrenArray = scriptEngine.newArray (children.size());
+
+    for(int i = 0; i < children.size(); i++) {
+        childrenArray.setProperty(i, scriptEngine.newQObject(children[i]));
+    }
+
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    ctx ->activationObject().setProperty(strings.scriptWidgetVariable, widgetObject);
+    ctx ->activationObject().setProperty(strings.scriptChildWidgetsVariable, childrenArray);
+}
+
+QString QFormScriptRunner::QFormScriptRunnerPrivate::engineError(QScriptEngine &scriptEngine) {
+    QScriptValue error = scriptEngine.evaluate(QLatin1String("Error"));
+    if (error.isValid())
+        return error.toString();
+    return QCoreApplication::tr("Unknown error");
+}
+// -- QFormScriptRunner
+
+QFormScriptRunner::QFormScriptRunner() : m_impl(new QFormScriptRunnerPrivate)
+{
+}
+
+QFormScriptRunner::~QFormScriptRunner()
+{
+    delete m_impl;
+}
+
+bool QFormScriptRunner::run(const DomWidget *domWidget,
+                            const QString &customWidgetScript,
+                            QWidget *widget, const WidgetList &children,
+                            QString *errorMessage)
+{
+    typedef QList<DomScript*> DomScripts;
+
+    const Options scriptOptions =  m_impl->options();
+    if (scriptOptions & DisableScripts)
+        return true;
+    // get list
+    const DomScripts domScripts = domWidget->elementScript();
+    // Concatenate snippets, starting with custom widget script
+    QString  script = customWidgetScript;
+    if (script.isEmpty() && domScripts.empty())
+        return true;
+
+    foreach (const DomScript *scriptSnippet, domScripts) {
+        // Ensure new line
+        if (!script.isEmpty() && !script.endsWith(QLatin1Char('\n')))
+            script += QLatin1Char('\n');
+        script += scriptSnippet->text();
+    }
+
+    if (script.isEmpty())
+        return true;
+
+    const bool rc =  m_impl->run(script, widget, children, errorMessage);
+
+    if (debugFormScriptRunner) {
+        qDebug() << "For " << widget << " with " << children.size() << " children, ran: " << script;
+        if (!rc)
+            qDebug() << *errorMessage;
+    }
+
+    if (!rc) {
+        if (!(scriptOptions & DisableWarnings)) {
+            const QString message = QCoreApplication::tr("An error occurred while running the script for %1: %2\nScript: %3").
+                arg(widget->objectName()).arg(*errorMessage).arg(script);
+            qWarning() <<  message;
+        }
+    }
+    return rc;
+}
+
+QFormScriptRunner::Options QFormScriptRunner::options() const
+{
+    return  m_impl->options();
+}
+
+void QFormScriptRunner::setOptions(Options options)
+{
+     m_impl->setOptions(options);
+}
+
+
+QFormScriptRunner::Errors QFormScriptRunner::errors() const
+{
+    return m_impl->errors();
+}
+
+void QFormScriptRunner::clearErrors()
+{
+     m_impl->clearErrors();
+}
+
+
+#ifdef QFORMINTERNAL_NAMESPACE
+} // namespace QFormInternal
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/formscriptrunner_p.h b/src/designer/src/lib/uilib/formscriptrunner_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..f0a6a368c7fbb5a2ddaeb55be388795143761e83
--- /dev/null
+++ b/src/designer/src/lib/uilib/formscriptrunner_p.h
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef FORMSCRIPTRUNNER_H
+#define FORMSCRIPTRUNNER_H
+
+//
+//  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.
+//
+
+#include "uilib_global.h"
+#include <QtCore/QList>
+#include <QtCore/QFlags>
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class QWidget;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class DomWidget;
+
+class QDESIGNER_UILIB_EXPORT QFormScriptRunner
+{
+public:
+    QFormScriptRunner();
+    ~QFormScriptRunner();
+
+    typedef QList<QWidget*> WidgetList;
+
+    bool run(const DomWidget *domWidget,
+             const QString &customWidgetScript,
+             QWidget *widget, const WidgetList &children,
+             QString *errorMessage);
+
+    struct Error {
+        QString objectName;
+        QString script;
+        QString errorMessage;
+    };
+    typedef QList<Error> Errors;
+    Errors errors() const;
+    void clearErrors();
+
+    enum Option {
+         NoOptions = 0x0,
+         DisableWarnings = 0x1,
+         DisableScripts = 02
+     };
+     Q_DECLARE_FLAGS(Options, Option)
+
+    Options options() const;
+    void setOptions(Options options);
+
+private:
+    class QFormScriptRunnerPrivate;
+    QFormScriptRunnerPrivate *m_impl;
+
+    QFormScriptRunner(const QFormScriptRunner &);
+    void operator = (const QFormScriptRunner &);
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QFormScriptRunner::Options)
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // FORMSCRIPTRUNNER_H
diff --git a/src/designer/src/lib/uilib/properties.cpp b/src/designer/src/lib/uilib/properties.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..88cd455d65e33523faec209bd0b906c72b6622a6
--- /dev/null
+++ b/src/designer/src/lib/uilib/properties.cpp
@@ -0,0 +1,681 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "properties_p.h"
+#include "ui4_p.h"
+#include "abstractformbuilder.h"
+#include "formbuilderextra_p.h"
+#include "resourcebuilder_p.h"
+
+#include <QtCore/QDateTime>
+#include <QtCore/QUrl>
+#include <QtCore/qdebug.h>
+
+#include <QtWidgets/QIcon>
+#include <QtGui/QPixmap>
+#include <QtGui/QFont>
+#include <QtWidgets/QFrame>
+#include <QtWidgets/QAbstractScrollArea>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+static inline void fixEnum(QString &s)
+{
+    int qualifierIndex = s.lastIndexOf(QLatin1Char(':'));
+    if (qualifierIndex == -1)
+        qualifierIndex = s.lastIndexOf(QLatin1Char('.'));
+    if (qualifierIndex != -1)
+        s.remove(0, qualifierIndex + 1);
+}
+// Convert complex DOM types with the help of  QAbstractFormBuilder
+QVariant domPropertyToVariant(QAbstractFormBuilder *afb,const QMetaObject *meta,const  DomProperty *p)
+{
+    // Complex types that need functions from QAbstractFormBuilder
+    switch(p->kind()) {
+    case DomProperty::String: {
+        const int index = meta->indexOfProperty(p->attributeName().toUtf8());
+        if (index != -1 && meta->property(index).type() == QVariant::KeySequence)
+            return QVariant::fromValue(QKeySequence(p->elementString()->text()));
+    }
+        break;
+
+    case DomProperty::Palette: {
+        const DomPalette *dom = p->elementPalette();
+        QPalette palette;
+
+        if (dom->elementActive())
+            afb->setupColorGroup(palette, QPalette::Active, dom->elementActive());
+
+        if (dom->elementInactive())
+            afb->setupColorGroup(palette, QPalette::Inactive, dom->elementInactive());
+
+        if (dom->elementDisabled())
+            afb->setupColorGroup(palette, QPalette::Disabled, dom->elementDisabled());
+
+        palette.setCurrentColorGroup(QPalette::Active);
+        return QVariant::fromValue(palette);
+    }
+
+    case DomProperty::Set: {
+        const QByteArray pname = p->attributeName().toUtf8();
+        const int index = meta->indexOfProperty(pname);
+        if (index == -1) {
+            uiLibWarning(QCoreApplication::translate("QFormBuilder", "The set-type property %1 could not be read.").arg(p->attributeName()));
+            return QVariant();
+        }
+
+        const QMetaEnum e = meta->property(index).enumerator();
+        Q_ASSERT(e.isFlag() == true);
+        return QVariant(e.keysToValue(p->elementSet().toUtf8()));
+    }
+
+    case DomProperty::Enum: {
+        const QByteArray pname = p->attributeName().toUtf8();
+        const int index = meta->indexOfProperty(pname);
+        QString enumValue = p->elementEnum();
+        // Triggers in case of objects in Designer like Spacer/Line for which properties
+        // are serialized using language introspection. On preview, however, these objects are
+        // emulated by hacks in the formbuilder (size policy/orientation)
+        fixEnum(enumValue);
+        if (index == -1) {
+            // ### special-casing for Line (QFrame) -- fix for 4.2. Jambi hack for enumerations
+            if (!qstrcmp(meta->className(), "QFrame")
+                && (pname == QByteArray("orientation"))) {
+                return QVariant(enumValue == QFormBuilderStrings::instance().horizontalPostFix ? QFrame::HLine : QFrame::VLine);
+            } else {
+                uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-type property %1 could not be read.").arg(p->attributeName()));
+                return QVariant();
+            }
+        }
+
+        const QMetaEnum e = meta->property(index).enumerator();
+        return QVariant(e.keyToValue(enumValue.toUtf8()));
+    }
+    case DomProperty::Brush:
+        return QVariant::fromValue(afb->setupBrush(p->elementBrush()));
+    default:
+        if (afb->resourceBuilder()->isResourceProperty(p)) {
+            return afb->resourceBuilder()->loadResource(afb->workingDirectory(), p);
+            }
+
+        break;
+    }
+
+    // simple type
+    return domPropertyToVariant(p);
+}
+
+// Convert simple DOM types
+QVariant domPropertyToVariant(const DomProperty *p)
+{
+    // requires non-const virtual nameToIcon, etc.
+    switch(p->kind()) {
+    case DomProperty::Bool:
+        return QVariant(p->elementBool() == QFormBuilderStrings::instance().trueValue);
+
+    case DomProperty::Cstring:
+        return QVariant(p->elementCstring().toUtf8());
+
+    case DomProperty::Point: {
+        const DomPoint *point = p->elementPoint();
+        return QVariant(QPoint(point->elementX(), point->elementY()));
+    }
+
+    case DomProperty::PointF: {
+        const DomPointF *pointf = p->elementPointF();
+        return QVariant(QPointF(pointf->elementX(), pointf->elementY()));
+    }
+
+    case DomProperty::Size: {
+        const DomSize *size = p->elementSize();
+        return QVariant(QSize(size->elementWidth(), size->elementHeight()));
+    }
+
+    case DomProperty::SizeF: {
+        const DomSizeF *sizef = p->elementSizeF();
+        return QVariant(QSizeF(sizef->elementWidth(), sizef->elementHeight()));
+    }
+
+    case DomProperty::Rect: {
+        const DomRect *rc = p->elementRect();
+        const QRect g(rc->elementX(), rc->elementY(), rc->elementWidth(), rc->elementHeight());
+        return QVariant(g);
+    }
+
+    case DomProperty::RectF: {
+        const DomRectF *rcf = p->elementRectF();
+        const QRectF g(rcf->elementX(), rcf->elementY(), rcf->elementWidth(), rcf->elementHeight());
+        return QVariant(g);
+    }
+
+    case DomProperty::String:
+        return QVariant(p->elementString()->text());
+
+    case DomProperty::Number:
+        return QVariant(p->elementNumber());
+
+    case DomProperty::UInt:
+        return QVariant(p->elementUInt());
+
+    case DomProperty::LongLong:
+        return QVariant(p->elementLongLong());
+
+    case DomProperty::ULongLong:
+        return QVariant(p->elementULongLong());
+
+    case DomProperty::Double:
+        return QVariant(p->elementDouble());
+
+    case DomProperty::Char: {
+        const DomChar *character = p->elementChar();
+        const QChar c(character->elementUnicode());
+        return QVariant::fromValue(c);
+    }
+
+    case DomProperty::Color: {
+        const DomColor *color = p->elementColor();
+        QColor c(color->elementRed(), color->elementGreen(), color->elementBlue());
+        if (color->hasAttributeAlpha())
+            c.setAlpha(color->attributeAlpha());
+        return QVariant::fromValue(c);
+    }
+
+    case DomProperty::Font: {
+        const DomFont *font = p->elementFont();
+
+        QFont f;
+        if (font->hasElementFamily() && !font->elementFamily().isEmpty())
+            f.setFamily(font->elementFamily());
+        if (font->hasElementPointSize() && font->elementPointSize() > 0)
+            f.setPointSize(font->elementPointSize());
+        if (font->hasElementWeight() && font->elementWeight() > 0)
+            f.setWeight(font->elementWeight());
+        if (font->hasElementItalic())
+            f.setItalic(font->elementItalic());
+        if (font->hasElementBold())
+            f.setBold(font->elementBold());
+        if (font->hasElementUnderline())
+            f.setUnderline(font->elementUnderline());
+        if (font->hasElementStrikeOut())
+            f.setStrikeOut(font->elementStrikeOut());
+        if (font->hasElementKerning())
+            f.setKerning(font->elementKerning());
+        if (font->hasElementAntialiasing())
+            f.setStyleStrategy(font->elementAntialiasing() ? QFont::PreferDefault : QFont::NoAntialias);
+        if (font->hasElementStyleStrategy()) {
+            f.setStyleStrategy(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QFont::StyleStrategy>("styleStrategy", font->elementStyleStrategy().toLatin1()));
+        }
+        return QVariant::fromValue(f);
+    }
+
+    case DomProperty::Date: {
+        const DomDate *date = p->elementDate();
+        return QVariant(QDate(date->elementYear(), date->elementMonth(), date->elementDay()));
+    }
+
+    case DomProperty::Time: {
+        const DomTime *t = p->elementTime();
+        return QVariant(QTime(t->elementHour(), t->elementMinute(), t->elementSecond()));
+    }
+
+    case DomProperty::DateTime: {
+        const DomDateTime *dateTime = p->elementDateTime();
+        const QDate d(dateTime->elementYear(), dateTime->elementMonth(), dateTime->elementDay());
+        const QTime tm(dateTime->elementHour(), dateTime->elementMinute(), dateTime->elementSecond());
+        return QVariant(QDateTime(d, tm));
+    }
+
+    case DomProperty::Url: {
+        const DomUrl *url = p->elementUrl();
+        return QVariant(QUrl(url->elementString()->text()));
+    }
+
+#ifndef QT_NO_CURSOR
+    case DomProperty::Cursor:
+        return QVariant::fromValue(QCursor(static_cast<Qt::CursorShape>(p->elementCursor())));
+
+    case DomProperty::CursorShape:
+        return QVariant::fromValue(QCursor(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::CursorShape>("cursorShape", p->elementCursorShape().toLatin1())));
+#endif
+
+    case DomProperty::Locale: {
+        const DomLocale *locale = p->elementLocale();
+        return QVariant::fromValue(QLocale(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Language>("language", locale->attributeLanguage().toLatin1()),
+                    enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Country>("country", locale->attributeCountry().toLatin1())));
+    }
+    case DomProperty::SizePolicy: {
+        const DomSizePolicy *sizep = p->elementSizePolicy();
+
+        QSizePolicy sizePolicy;
+        sizePolicy.setHorizontalStretch(sizep->elementHorStretch());
+        sizePolicy.setVerticalStretch(sizep->elementVerStretch());
+
+        const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType");
+
+        if (sizep->hasElementHSizeType()) {
+            sizePolicy.setHorizontalPolicy((QSizePolicy::Policy) sizep->elementHSizeType());
+        } else if (sizep->hasAttributeHSizeType()) {
+            const QSizePolicy::Policy sp = enumKeyToValue<QSizePolicy::Policy>(sizeType_enum, sizep->attributeHSizeType().toLatin1());
+            sizePolicy.setHorizontalPolicy(sp);
+        }
+
+        if (sizep->hasElementVSizeType()) {
+            sizePolicy.setVerticalPolicy((QSizePolicy::Policy) sizep->elementVSizeType());
+        } else if (sizep->hasAttributeVSizeType()) {
+            const  QSizePolicy::Policy sp = enumKeyToValue<QSizePolicy::Policy>(sizeType_enum, sizep->attributeVSizeType().toLatin1());
+            sizePolicy.setVerticalPolicy(sp);
+        }
+
+        return QVariant::fromValue(sizePolicy);
+    }
+
+    case DomProperty::StringList:
+        return QVariant(p->elementStringList()->elementString());
+
+    default:
+        uiLibWarning(QCoreApplication::translate("QFormBuilder", "Reading properties of the type %1 is not supported yet.").arg(p->kind()));
+        break;
+    }
+
+    return QVariant();
+}
+
+// Apply a simple variant type to a DOM property
+static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop)
+{
+    switch (v.type()) {
+    case QVariant::String: {
+        DomString *str = new DomString();
+        str->setText(v.toString());
+        if (!translateString)
+            str->setAttributeNotr(QLatin1String("true"));
+        dom_prop->setElementString(str);
+    }
+        return true;
+
+    case QVariant::ByteArray:
+        dom_prop->setElementCstring(QString::fromUtf8(v.toByteArray()));
+        return true;
+
+    case QVariant::Int:
+        dom_prop->setElementNumber(v.toInt());
+        return true;
+
+    case QVariant::UInt:
+        dom_prop->setElementUInt(v.toUInt());
+        return true;
+
+    case QVariant::LongLong:
+        dom_prop->setElementLongLong(v.toLongLong());
+        return true;
+
+    case QVariant::ULongLong:
+        dom_prop->setElementULongLong(v.toULongLong());
+        return true;
+
+    case QVariant::Double:
+        dom_prop->setElementDouble(v.toDouble());
+        return true;
+
+    case QVariant::Bool:
+        dom_prop->setElementBool(v.toBool() ? QFormBuilderStrings::instance().trueValue : QFormBuilderStrings::instance().falseValue);
+        return true;
+
+    case QVariant::Char: {
+        DomChar *ch = new DomChar();
+        const QChar character = v.toChar();
+        ch->setElementUnicode(character.unicode());
+        dom_prop->setElementChar(ch);
+    }
+        return true;
+
+    case QVariant::Point: {
+        DomPoint *pt = new DomPoint();
+        const QPoint point = v.toPoint();
+        pt->setElementX(point.x());
+        pt->setElementY(point.y());
+        dom_prop->setElementPoint(pt);
+    }
+        return true;
+
+    case QVariant::PointF: {
+        DomPointF *ptf = new DomPointF();
+        const QPointF pointf = v.toPointF();
+        ptf->setElementX(pointf.x());
+        ptf->setElementY(pointf.y());
+        dom_prop->setElementPointF(ptf);
+    }
+        return true;
+
+    case QVariant::Color: {
+        DomColor *clr = new DomColor();
+        const QColor color = qvariant_cast<QColor>(v);
+        clr->setElementRed(color.red());
+        clr->setElementGreen(color.green());
+        clr->setElementBlue(color.blue());
+        const int alphaChannel = color.alpha();
+        if (alphaChannel != 255)
+            clr->setAttributeAlpha(alphaChannel);
+        dom_prop->setElementColor(clr);
+    }
+        return true;
+
+    case QVariant::Size: {
+        DomSize *sz = new DomSize();
+        const QSize size = v.toSize();
+        sz->setElementWidth(size.width());
+        sz->setElementHeight(size.height());
+        dom_prop->setElementSize(sz);
+    }
+        return true;
+
+    case QVariant::SizeF: {
+        DomSizeF *szf = new DomSizeF();
+        const QSizeF sizef = v.toSizeF();
+        szf->setElementWidth(sizef.width());
+        szf->setElementHeight(sizef.height());
+        dom_prop->setElementSizeF(szf);
+    }
+        return true;
+
+    case QVariant::Rect: {
+        DomRect *rc = new DomRect();
+        const QRect rect = v.toRect();
+        rc->setElementX(rect.x());
+        rc->setElementY(rect.y());
+        rc->setElementWidth(rect.width());
+        rc->setElementHeight(rect.height());
+        dom_prop->setElementRect(rc);
+    }
+        return true;
+
+    case QVariant::RectF: {
+        DomRectF *rcf = new DomRectF();
+        const QRectF rectf = v.toRectF();
+        rcf->setElementX(rectf.x());
+        rcf->setElementY(rectf.y());
+        rcf->setElementWidth(rectf.width());
+        rcf->setElementHeight(rectf.height());
+        dom_prop->setElementRectF(rcf);
+    }
+        return true;
+
+    case QVariant::Font: {
+        DomFont *fnt = new DomFont();
+        const QFont font = qvariant_cast<QFont>(v);
+        const uint mask = font.resolve();
+        if (mask & QFont::WeightResolved) {
+            fnt->setElementBold(font.bold());
+            fnt->setElementWeight(font.weight());
+        }
+        if (mask & QFont::FamilyResolved)
+            fnt->setElementFamily(font.family());
+        if (mask & QFont::StyleResolved)
+            fnt->setElementItalic(font.italic());
+        if (mask & QFont::SizeResolved)
+            fnt->setElementPointSize(font.pointSize());
+        if (mask & QFont::StrikeOutResolved)
+            fnt->setElementStrikeOut(font.strikeOut());
+        if (mask & QFont::UnderlineResolved)
+            fnt->setElementUnderline(font.underline());
+        if (mask & QFont::KerningResolved)
+            fnt->setElementKerning(font.kerning());
+        if (mask & QFont::StyleStrategyResolved) {
+            const QMetaEnum styleStrategy_enum = metaEnum<QAbstractFormBuilderGadget>("styleStrategy");
+            fnt->setElementStyleStrategy(QLatin1String(styleStrategy_enum.valueToKey(font.styleStrategy())));
+        }
+        dom_prop->setElementFont(fnt);
+    }
+        return true;
+
+#ifndef QT_NO_CURSOR
+    case QVariant::Cursor: {
+        const QMetaEnum cursorShape_enum = metaEnum<QAbstractFormBuilderGadget>("cursorShape");
+        dom_prop->setElementCursorShape(QLatin1String(cursorShape_enum.valueToKey(qvariant_cast<QCursor>(v).shape())));
+        }
+        return true;
+#endif
+
+    case QVariant::KeySequence: {
+        DomString *s = new DomString();
+        s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText));
+        dom_prop->setElementString(s);
+        }
+        return true;
+
+    case QVariant::Locale: {
+        DomLocale *dom = new DomLocale();
+        const QLocale locale = qvariant_cast<QLocale>(v);
+
+        const QMetaEnum language_enum = metaEnum<QAbstractFormBuilderGadget>("language");
+        const QMetaEnum country_enum = metaEnum<QAbstractFormBuilderGadget>("country");
+
+        dom->setAttributeLanguage(QLatin1String(language_enum.valueToKey(locale.language())));
+        dom->setAttributeCountry(QLatin1String(country_enum.valueToKey(locale.country())));
+
+        dom_prop->setElementLocale(dom);
+        }
+        return true;
+
+    case QVariant::SizePolicy: {
+        DomSizePolicy *dom = new DomSizePolicy();
+        const QSizePolicy sizePolicy = qvariant_cast<QSizePolicy>(v);
+
+        dom->setElementHorStretch(sizePolicy.horizontalStretch());
+        dom->setElementVerStretch(sizePolicy.verticalStretch());
+
+        const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType");
+
+        dom->setAttributeHSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.horizontalPolicy())));
+        dom->setAttributeVSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.verticalPolicy())));
+
+        dom_prop->setElementSizePolicy(dom);
+    }
+        return true;
+
+    case QVariant::Date: {
+        DomDate *dom = new DomDate();
+        const QDate date = qvariant_cast<QDate>(v);
+
+        dom->setElementYear(date.year());
+        dom->setElementMonth(date.month());
+        dom->setElementDay(date.day());
+
+        dom_prop->setElementDate(dom);
+        }
+        return true;
+
+    case QVariant::Time: {
+        DomTime *dom = new DomTime();
+        const QTime time = qvariant_cast<QTime>(v);
+
+        dom->setElementHour(time.hour());
+        dom->setElementMinute(time.minute());
+        dom->setElementSecond(time.second());
+
+        dom_prop->setElementTime(dom);
+        }
+        return true;
+
+    case QVariant::DateTime: {
+        DomDateTime *dom = new DomDateTime();
+        const QDateTime dateTime = qvariant_cast<QDateTime>(v);
+
+        dom->setElementHour(dateTime.time().hour());
+        dom->setElementMinute(dateTime.time().minute());
+        dom->setElementSecond(dateTime.time().second());
+        dom->setElementYear(dateTime.date().year());
+        dom->setElementMonth(dateTime.date().month());
+        dom->setElementDay(dateTime.date().day());
+
+        dom_prop->setElementDateTime(dom);
+    }
+        return true;
+
+    case QVariant::Url: {
+        DomUrl *dom = new DomUrl();
+        const QUrl url = v.toUrl();
+
+        DomString *str = new DomString();
+        str->setText(url.toString());
+        dom->setElementString(str);
+
+        dom_prop->setElementUrl(dom);
+    }
+        return true;
+
+    case QVariant::StringList: {
+        DomStringList *sl = new DomStringList;
+        sl->setElementString(qvariant_cast<QStringList>(v));
+        dom_prop->setElementStringList(sl);
+    }
+        return true;
+
+    default:
+        break;
+    }
+
+    return false;
+}
+static QString msgCannotWriteProperty(const QString &pname, const QVariant &v)
+{
+    return QCoreApplication::translate("QFormBuilder", "The property %1 could not be written. The type %2 is not supported yet.").
+                       arg(pname).arg(QLatin1String(v.typeName()));
+
+}
+
+static bool isOfType(const QMetaObject *what, const QMetaObject *type)
+{
+    do {
+        if (what == type)
+            return true;
+    } while ((what = what->superClass()));
+    return false;
+}
+
+static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
+{
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+    if (pname == strings.objectNameProperty)
+        return false;
+    if (pname == strings.styleSheetProperty && v.type() == QVariant::String && isOfType(meta, &QWidget::staticMetaObject))
+        return false;
+    return true;
+}
+
+// Convert complex variant types to DOM properties with the help of  QAbstractFormBuilder
+// Does not perform a check using  QAbstractFormBuilder::checkProperty().
+DomProperty *variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *meta,
+                                  const QString &pname, const QVariant &v)
+{
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+
+    DomProperty *dom_prop = new DomProperty();
+    dom_prop->setAttributeName(pname);
+
+    const int pindex = meta->indexOfProperty(pname.toLatin1());
+    if (pindex != -1) {
+        QMetaProperty meta_property = meta->property(pindex);
+        if ((v.type() == QVariant::Int || v.type() == QVariant::UInt) && meta_property.isEnumType()) {
+            const QMetaEnum e = meta_property.enumerator();
+            if (e.isFlag())
+                dom_prop->setElementSet(QString::fromAscii(e.valueToKeys(v.toInt())));
+            else
+                dom_prop->setElementEnum(QString::fromAscii(e.valueToKey(v.toInt())));
+            return dom_prop;
+        }
+        if (!meta_property.hasStdCppSet() || (isOfType(meta, &QAbstractScrollArea::staticMetaObject) && pname == strings.cursorProperty))
+            dom_prop->setAttributeStdset(0);
+    }
+
+    // Try simple properties
+    if (applySimpleProperty(v, isTranslatable(pname, v, meta), dom_prop))
+        return dom_prop;
+
+    // Complex properties
+    switch (v.type()) {
+    case QVariant::Palette: {
+        DomPalette *dom = new DomPalette();
+        QPalette palette = qvariant_cast<QPalette>(v);
+
+        palette.setCurrentColorGroup(QPalette::Active);
+        dom->setElementActive(afb->saveColorGroup(palette));
+
+        palette.setCurrentColorGroup(QPalette::Inactive);
+        dom->setElementInactive(afb->saveColorGroup(palette));
+
+        palette.setCurrentColorGroup(QPalette::Disabled);
+        dom->setElementDisabled(afb->saveColorGroup(palette));
+
+        dom_prop->setElementPalette(dom);
+    } break;
+    case QVariant::Brush:
+        dom_prop->setElementBrush(afb->saveBrush(qvariant_cast<QBrush>(v)));
+        break;
+    default: {
+        const bool hadAttributeStdset = dom_prop->hasAttributeStdset();
+        const bool attributeStdset = dom_prop->attributeStdset();
+        delete dom_prop;
+        if (afb->resourceBuilder()->isResourceType(v)) {
+            dom_prop = afb->resourceBuilder()->saveResource(afb->workingDirectory(), v);
+            if (dom_prop) {
+                dom_prop->setAttributeName(pname);
+                if (hadAttributeStdset)
+                    dom_prop->setAttributeStdset(attributeStdset);
+            }
+            break;
+        }
+        uiLibWarning(msgCannotWriteProperty(pname, v));
+    } return 0;
+    }
+    return dom_prop;
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/properties_p.h b/src/designer/src/lib/uilib/properties_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..98b84fce9f435ebd3753f34c10d62dec62f97c51
--- /dev/null
+++ b/src/designer/src/lib/uilib/properties_p.h
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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 for the convenience
+// of Qt Designer.  This header
+// file may change from version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef UILIBPROPERTIES_H
+#define UILIBPROPERTIES_H
+
+#include "uilib_global.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QMetaProperty>
+#include <QtCore/QLocale>
+#include <QtCore/QCoreApplication>
+
+#include <QtWidgets/QWidget>
+
+#include "formbuilderextra_p.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class QAbstractFormBuilder;
+class DomProperty;
+
+QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value);
+
+
+QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(const DomProperty *property);
+QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const  DomProperty *property);
+
+// This class exists to provide meta information
+// for enumerations only.
+class QAbstractFormBuilderGadget: public QWidget
+{
+    Q_OBJECT
+    Q_PROPERTY(Qt::ItemFlags itemFlags READ fakeItemFlags)
+    Q_PROPERTY(Qt::CheckState checkState READ fakeCheckState)
+    Q_PROPERTY(Qt::Alignment textAlignment READ fakeAlignment)
+    Q_PROPERTY(Qt::Orientation orientation READ fakeOrientation)
+    Q_PROPERTY(QSizePolicy::Policy sizeType READ fakeSizeType)
+    Q_PROPERTY(QPalette::ColorRole colorRole READ fakeColorRole)
+    Q_PROPERTY(QPalette::ColorGroup colorGroup READ fakeColorGroup)
+    Q_PROPERTY(QFont::StyleStrategy styleStrategy READ fakeStyleStrategy)
+    Q_PROPERTY(Qt::CursorShape cursorShape READ fakeCursorShape)
+    Q_PROPERTY(Qt::BrushStyle brushStyle READ fakeBrushStyle)
+    Q_PROPERTY(Qt::ToolBarArea toolBarArea READ fakeToolBarArea)
+    Q_PROPERTY(QGradient::Type gradientType READ fakeGradientType)
+    Q_PROPERTY(QGradient::Spread gradientSpread READ fakeGradientSpread)
+    Q_PROPERTY(QGradient::CoordinateMode gradientCoordinate READ fakeGradientCoordinate)
+    Q_PROPERTY(QLocale::Language language READ fakeLanguage)
+    Q_PROPERTY(QLocale::Country country READ fakeCountry)
+public:
+    QAbstractFormBuilderGadget() { Q_ASSERT(0); }
+
+    Qt::Orientation fakeOrientation() const     { Q_ASSERT(0); return Qt::Horizontal; }
+    QSizePolicy::Policy fakeSizeType() const    { Q_ASSERT(0); return QSizePolicy::Expanding; }
+    QPalette::ColorGroup fakeColorGroup() const { Q_ASSERT(0); return static_cast<QPalette::ColorGroup>(0); }
+    QPalette::ColorRole fakeColorRole() const   { Q_ASSERT(0); return static_cast<QPalette::ColorRole>(0); }
+    QFont::StyleStrategy fakeStyleStrategy() const     { Q_ASSERT(0); return QFont::PreferDefault; }
+    Qt::CursorShape fakeCursorShape() const     { Q_ASSERT(0); return Qt::ArrowCursor; }
+    Qt::BrushStyle fakeBrushStyle() const       { Q_ASSERT(0); return Qt::NoBrush; }
+    Qt::ToolBarArea fakeToolBarArea() const {  Q_ASSERT(0); return Qt::NoToolBarArea; }
+    QGradient::Type fakeGradientType() const    { Q_ASSERT(0); return QGradient::NoGradient; }
+    QGradient::Spread fakeGradientSpread() const  { Q_ASSERT(0); return QGradient::PadSpread; }
+    QGradient::CoordinateMode fakeGradientCoordinate() const  { Q_ASSERT(0); return QGradient::LogicalMode; }
+    QLocale::Language fakeLanguage() const  { Q_ASSERT(0); return QLocale::C; }
+    QLocale::Country fakeCountry() const  { Q_ASSERT(0); return QLocale::AnyCountry; }
+    Qt::ItemFlags fakeItemFlags() const         { Q_ASSERT(0); return Qt::NoItemFlags; }
+    Qt::CheckState fakeCheckState() const       { Q_ASSERT(0); return Qt::Unchecked; }
+    Qt::Alignment fakeAlignment() const         { Q_ASSERT(0); return Qt::AlignLeft; }
+};
+
+// Convert key to value for a given QMetaEnum
+template <class EnumType>
+inline EnumType enumKeyToValue(const QMetaEnum &metaEnum,const char *key, const EnumType* = 0)
+{
+    int val = metaEnum.keyToValue(key);
+    if (val == -1) {
+
+        uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-value '%1' is invalid. The default value '%2' will be used instead.")
+                    .arg(QString::fromUtf8(key)).arg(QString::fromUtf8(metaEnum.key(0))));
+        val = metaEnum.value(0);
+    }
+    return static_cast<EnumType>(val);
+}
+
+// Convert keys to value for a given QMetaEnum
+template <class EnumType>
+inline EnumType enumKeysToValue(const QMetaEnum &metaEnum,const char *keys, const EnumType* = 0)
+{
+    int val = metaEnum.keysToValue(keys);
+    if (val == -1) {
+
+        uiLibWarning(QCoreApplication::translate("QFormBuilder", "The flag-value '%1' is invalid. Zero will be used instead.")
+                    .arg(QString::fromUtf8(keys)));
+        val = 0;
+    }
+    return static_cast<EnumType>(QFlag(val));
+}
+
+// Access meta enumeration object of a qobject
+template <class QObjectType>
+inline QMetaEnum metaEnum(const char *name, const QObjectType* = 0)
+{
+    const int e_index = QObjectType::staticMetaObject.indexOfProperty(name);
+    Q_ASSERT(e_index != -1);
+    return QObjectType::staticMetaObject.property(e_index).enumerator();
+}
+
+// Convert key to value for enumeration by name
+template <class QObjectType, class EnumType>
+inline EnumType enumKeyOfObjectToValue(const char *enumName, const char *key, const QObjectType* = 0, const EnumType* = 0)
+{
+    const QMetaEnum me = metaEnum<QObjectType>(enumName);
+    return enumKeyToValue<EnumType>(me, key);
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // UILIBPROPERTIES_H
diff --git a/src/designer/src/lib/uilib/qdesignerexportwidget.h b/src/designer/src/lib/uilib/qdesignerexportwidget.h
new file mode 100644
index 0000000000000000000000000000000000000000..54053ff274f11d51357e7262d680c49b88f18575
--- /dev/null
+++ b/src/designer/src/lib/uilib/qdesignerexportwidget.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef QDESIGNEREXPORTWIDGET_H
+#define QDESIGNEREXPORTWIDGET_H
+
+#include <QtCore/QtGlobal>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+#if 0
+// pragma for syncqt, don't remove.
+#pragma qt_class(QDesignerExportWidget)
+#endif
+
+#if defined(QDESIGNER_EXPORT_WIDGETS)
+#  define QDESIGNER_WIDGET_EXPORT Q_DECL_EXPORT
+#else
+#  define QDESIGNER_WIDGET_EXPORT Q_DECL_IMPORT
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif //QDESIGNEREXPORTWIDGET_H
diff --git a/src/designer/src/lib/uilib/resourcebuilder.cpp b/src/designer/src/lib/uilib/resourcebuilder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..72921c636bff1a942fb01c2c964cdc6a49660499
--- /dev/null
+++ b/src/designer/src/lib/uilib/resourcebuilder.cpp
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "resourcebuilder_p.h"
+#include "ui4_p.h"
+#include <QtCore/QVariant>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QDebug>
+#include <QtGui/QPixmap>
+#include <QtWidgets/QIcon>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal {
+#endif
+
+enum { themeDebug = 0 };
+
+QResourceBuilder::QResourceBuilder()
+{
+
+}
+
+QResourceBuilder::~QResourceBuilder()
+{
+
+}
+
+int QResourceBuilder::iconStateFlags(const DomResourceIcon *dpi)
+{
+    int rc = 0;
+    if (dpi->hasElementNormalOff())
+        rc |= NormalOff;
+    if (dpi->hasElementNormalOn())
+        rc |= NormalOn;
+    if (dpi->hasElementDisabledOff())
+        rc |= DisabledOff;
+    if (dpi->hasElementDisabledOn())
+        rc |= DisabledOn;
+    if (dpi->hasElementActiveOff())
+        rc |= ActiveOff;
+    if (dpi->hasElementActiveOn())
+        rc |= ActiveOn;
+    if (dpi->hasElementSelectedOff())
+        rc |= SelectedOff;
+    if (dpi->hasElementSelectedOn())
+        rc |= SelectedOn;
+    return rc;
+}
+
+QVariant QResourceBuilder::loadResource(const QDir &workingDirectory, const DomProperty *property) const
+{
+    switch (property->kind()) {
+        case DomProperty::Pixmap: {
+            const DomResourcePixmap *dpx = property->elementPixmap();
+            QPixmap pixmap(QFileInfo(workingDirectory, dpx->text()).absoluteFilePath());
+            return QVariant::fromValue(pixmap);
+        }
+        case DomProperty::IconSet: {
+            const DomResourceIcon *dpi = property->elementIconSet();
+            if (!dpi->attributeTheme().isEmpty()) {
+                const QString theme = dpi->attributeTheme();
+                const bool known = QIcon::hasThemeIcon(theme);
+                if (themeDebug)
+                    qDebug("Theme %s known %d", qPrintable(theme), known);
+                if (known)
+                    return qVariantFromValue(QIcon::fromTheme(dpi->attributeTheme()));
+            } // non-empty theme
+            if (const int flags = iconStateFlags(dpi)) { // new, post 4.4 format
+                QIcon icon;
+                if (flags & NormalOff)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOff()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::Off);
+                if (flags & NormalOn)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOn()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::On);
+                if (flags & DisabledOff)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOff()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::Off);
+                if (flags & DisabledOn)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOn()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::On);
+                if (flags & ActiveOff)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOff()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::Off);
+                if (flags & ActiveOn)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOn()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::On);
+                if (flags & SelectedOff)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOff()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::Off);
+                if (flags & SelectedOn)
+                    icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOn()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::On);
+                return QVariant::fromValue(icon);
+            } else { // 4.3 legacy
+                const QIcon icon(QFileInfo(workingDirectory, dpi->text()).absoluteFilePath());
+                return QVariant::fromValue(icon);
+            }
+        }
+            break;
+        default:
+            break;
+    }
+    return QVariant();
+}
+
+QVariant QResourceBuilder::toNativeValue(const QVariant &value) const
+{
+    return value;
+}
+
+DomProperty *QResourceBuilder::saveResource(const QDir &workingDirectory, const QVariant &value) const
+{
+    Q_UNUSED(workingDirectory)
+    Q_UNUSED(value)
+    return 0;
+}
+
+bool QResourceBuilder::isResourceProperty(const DomProperty *p) const
+{
+    switch (p->kind()) {
+        case DomProperty::Pixmap:
+        case DomProperty::IconSet:
+            return true;
+        default:
+            break;
+    }
+    return false;
+}
+
+bool QResourceBuilder::isResourceType(const QVariant &value) const
+{
+    switch (value.type()) {
+        case QVariant::Pixmap:
+        case QVariant::Icon:
+            return true;
+        default:
+            break;
+    }
+    return false;
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+} // namespace QFormInternal
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/resourcebuilder_p.h b/src/designer/src/lib/uilib/resourcebuilder_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..ca699a05fa164673929dc579ccc290cf07100797
--- /dev/null
+++ b/src/designer/src/lib/uilib/resourcebuilder_p.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef RESOURCEBUILDER_H
+#define RESOURCEBUILDER_H
+
+//
+//  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.
+//
+
+#include "uilib_global.h"
+#include <QtCore/QList>
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class QDir;
+class QVariant;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class DomProperty;
+class DomResourceIcon;
+
+class QDESIGNER_UILIB_EXPORT QResourceBuilder
+{
+public:
+    enum IconStateFlags {
+        NormalOff = 0x1, NormalOn = 0x2, DisabledOff = 0x4, DisabledOn = 0x8,
+        ActiveOff = 0x10, ActiveOn = 0x20, SelectedOff = 0x40, SelectedOn = 0x80
+    };
+
+    QResourceBuilder();
+    virtual ~QResourceBuilder();
+
+    virtual QVariant loadResource(const QDir &workingDirectory, const DomProperty *property) const;
+
+    virtual QVariant toNativeValue(const QVariant &value) const;
+
+    virtual DomProperty *saveResource(const QDir &workingDirectory, const QVariant &value) const;
+
+    virtual bool isResourceProperty(const DomProperty *p) const;
+
+    virtual bool isResourceType(const QVariant &value) const;
+
+    static int iconStateFlags(const DomResourceIcon *resIcon);
+};
+
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // RESOURCEBUILDER_H
diff --git a/src/designer/src/lib/uilib/textbuilder.cpp b/src/designer/src/lib/uilib/textbuilder.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d9d2ac3b1a68a017eec6979dcbe88a73d5800062
--- /dev/null
+++ b/src/designer/src/lib/uilib/textbuilder.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#include "textbuilder_p.h"
+#include "ui4_p.h"
+#include <QtCore/QVariant>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal {
+#endif
+
+QTextBuilder::QTextBuilder()
+{
+
+}
+
+QTextBuilder::~QTextBuilder()
+{
+
+}
+
+QVariant QTextBuilder::loadText(const DomProperty *property) const
+{
+    if (property->kind() == DomProperty::String)
+        return property->elementString()->text();
+    return QVariant();
+}
+
+QVariant QTextBuilder::toNativeValue(const QVariant &value) const
+{
+    return value;
+}
+
+DomProperty *QTextBuilder::saveText(const QVariant &value) const
+{
+    Q_UNUSED(value)
+    return 0;
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+} // namespace QFormInternal
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/designer/src/lib/uilib/textbuilder_p.h b/src/designer/src/lib/uilib/textbuilder_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..bef4a64f0f09e3a509fda7ceafb252d116755593
--- /dev/null
+++ b/src/designer/src/lib/uilib/textbuilder_p.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef TEXTBUILDER_H
+#define TEXTBUILDER_H
+
+//
+//  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.
+//
+
+#include "uilib_global.h"
+#include <QtCore/QList>
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class QDir;
+class QVariant;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class DomProperty;
+class DomString;
+
+class QDESIGNER_UILIB_EXPORT QTextBuilder
+{
+public:
+    QTextBuilder();
+    virtual ~QTextBuilder();
+
+    virtual QVariant loadText(const DomProperty *property) const;
+
+    virtual QVariant toNativeValue(const QVariant &value) const;
+
+    virtual DomProperty *saveText(const QVariant &value) const;
+};
+
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // TEXTBUILDER_H
diff --git a/src/designer/src/lib/uilib/ui4.cpp b/src/designer/src/lib/uilib/ui4.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5c232c862c65073b7eed4ff39461142b63dccc86
--- /dev/null
+++ b/src/designer/src/lib/uilib/ui4.cpp
@@ -0,0 +1,8907 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications 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$
+**
+****************************************************************************/
+#include "ui4_p.h"
+
+
+QT_BEGIN_NAMESPACE
+#ifdef QFORMINTERNAL_NAMESPACE
+using namespace QFormInternal;
+#endif
+
+/*******************************************************************************
+** Implementations
+*/
+
+void DomUI::clear(bool clear_all)
+{
+    delete m_widget;
+    delete m_layoutDefault;
+    delete m_layoutFunction;
+    delete m_customWidgets;
+    delete m_tabStops;
+    delete m_images;
+    delete m_includes;
+    delete m_resources;
+    delete m_connections;
+    delete m_designerdata;
+    delete m_slots;
+    delete m_buttonGroups;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_version = false;
+    m_has_attr_language = false;
+    m_has_attr_displayname = false;
+    m_has_attr_stdsetdef = false;
+    m_attr_stdsetdef = 0;
+    m_has_attr_stdSetDef = false;
+    m_attr_stdSetDef = 0;
+    }
+
+    m_children = 0;
+    m_widget = 0;
+    m_layoutDefault = 0;
+    m_layoutFunction = 0;
+    m_customWidgets = 0;
+    m_tabStops = 0;
+    m_images = 0;
+    m_includes = 0;
+    m_resources = 0;
+    m_connections = 0;
+    m_designerdata = 0;
+    m_slots = 0;
+    m_buttonGroups = 0;
+}
+
+DomUI::DomUI()
+{
+    m_children = 0;
+    m_has_attr_version = false;
+    m_has_attr_language = false;
+    m_has_attr_displayname = false;
+    m_has_attr_stdsetdef = false;
+    m_attr_stdsetdef = 0;
+    m_has_attr_stdSetDef = false;
+    m_attr_stdSetDef = 0;
+    m_widget = 0;
+    m_layoutDefault = 0;
+    m_layoutFunction = 0;
+    m_customWidgets = 0;
+    m_tabStops = 0;
+    m_images = 0;
+    m_includes = 0;
+    m_resources = 0;
+    m_connections = 0;
+    m_designerdata = 0;
+    m_slots = 0;
+    m_buttonGroups = 0;
+}
+
+DomUI::~DomUI()
+{
+    delete m_widget;
+    delete m_layoutDefault;
+    delete m_layoutFunction;
+    delete m_customWidgets;
+    delete m_tabStops;
+    delete m_images;
+    delete m_includes;
+    delete m_resources;
+    delete m_connections;
+    delete m_designerdata;
+    delete m_slots;
+    delete m_buttonGroups;
+}
+
+void DomUI::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("version")) {
+            setAttributeVersion(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("displayname")) {
+            setAttributeDisplayname(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("stdsetdef")) {
+            setAttributeStdsetdef(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("stdSetDef")) {
+            setAttributeStdSetDef(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("author")) {
+                setElementAuthor(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("comment")) {
+                setElementComment(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("exportmacro")) {
+                setElementExportMacro(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("class")) {
+                setElementClass(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QStringLiteral("layoutdefault")) {
+                DomLayoutDefault *v = new DomLayoutDefault();
+                v->read(reader);
+                setElementLayoutDefault(v);
+                continue;
+            }
+            if (tag == QStringLiteral("layoutfunction")) {
+                DomLayoutFunction *v = new DomLayoutFunction();
+                v->read(reader);
+                setElementLayoutFunction(v);
+                continue;
+            }
+            if (tag == QStringLiteral("pixmapfunction")) {
+                setElementPixmapFunction(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("customwidgets")) {
+                DomCustomWidgets *v = new DomCustomWidgets();
+                v->read(reader);
+                setElementCustomWidgets(v);
+                continue;
+            }
+            if (tag == QStringLiteral("tabstops")) {
+                DomTabStops *v = new DomTabStops();
+                v->read(reader);
+                setElementTabStops(v);
+                continue;
+            }
+            if (tag == QStringLiteral("images")) {
+                DomImages *v = new DomImages();
+                v->read(reader);
+                setElementImages(v);
+                continue;
+            }
+            if (tag == QStringLiteral("includes")) {
+                DomIncludes *v = new DomIncludes();
+                v->read(reader);
+                setElementIncludes(v);
+                continue;
+            }
+            if (tag == QStringLiteral("resources")) {
+                DomResources *v = new DomResources();
+                v->read(reader);
+                setElementResources(v);
+                continue;
+            }
+            if (tag == QStringLiteral("connections")) {
+                DomConnections *v = new DomConnections();
+                v->read(reader);
+                setElementConnections(v);
+                continue;
+            }
+            if (tag == QStringLiteral("designerdata")) {
+                DomDesignerData *v = new DomDesignerData();
+                v->read(reader);
+                setElementDesignerdata(v);
+                continue;
+            }
+            if (tag == QStringLiteral("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(reader);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QStringLiteral("buttongroups")) {
+                DomButtonGroups *v = new DomButtonGroups();
+                v->read(reader);
+                setElementButtonGroups(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomUI::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("ui") : tagName.toLower());
+
+    if (hasAttributeVersion())
+        writer.writeAttribute(QStringLiteral("version"), attributeVersion());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QStringLiteral("language"), attributeLanguage());
+
+    if (hasAttributeDisplayname())
+        writer.writeAttribute(QStringLiteral("displayname"), attributeDisplayname());
+
+    if (hasAttributeStdsetdef())
+        writer.writeAttribute(QStringLiteral("stdsetdef"), QString::number(attributeStdsetdef()));
+
+    if (hasAttributeStdSetDef())
+        writer.writeAttribute(QStringLiteral("stdsetdef"), QString::number(attributeStdSetDef()));
+
+    if (m_children & Author) {
+        writer.writeTextElement(QStringLiteral("author"), m_author);
+    }
+
+    if (m_children & Comment) {
+        writer.writeTextElement(QStringLiteral("comment"), m_comment);
+    }
+
+    if (m_children & ExportMacro) {
+        writer.writeTextElement(QStringLiteral("exportmacro"), m_exportMacro);
+    }
+
+    if (m_children & Class) {
+        writer.writeTextElement(QStringLiteral("class"), m_class);
+    }
+
+    if (m_children & Widget) {
+        m_widget->write(writer, QStringLiteral("widget"));
+    }
+
+    if (m_children & LayoutDefault) {
+        m_layoutDefault->write(writer, QStringLiteral("layoutdefault"));
+    }
+
+    if (m_children & LayoutFunction) {
+        m_layoutFunction->write(writer, QStringLiteral("layoutfunction"));
+    }
+
+    if (m_children & PixmapFunction) {
+        writer.writeTextElement(QStringLiteral("pixmapfunction"), m_pixmapFunction);
+    }
+
+    if (m_children & CustomWidgets) {
+        m_customWidgets->write(writer, QStringLiteral("customwidgets"));
+    }
+
+    if (m_children & TabStops) {
+        m_tabStops->write(writer, QStringLiteral("tabstops"));
+    }
+
+    if (m_children & Images) {
+        m_images->write(writer, QStringLiteral("images"));
+    }
+
+    if (m_children & Includes) {
+        m_includes->write(writer, QStringLiteral("includes"));
+    }
+
+    if (m_children & Resources) {
+        m_resources->write(writer, QStringLiteral("resources"));
+    }
+
+    if (m_children & Connections) {
+        m_connections->write(writer, QStringLiteral("connections"));
+    }
+
+    if (m_children & Designerdata) {
+        m_designerdata->write(writer, QStringLiteral("designerdata"));
+    }
+
+    if (m_children & Slots) {
+        m_slots->write(writer, QStringLiteral("slots"));
+    }
+
+    if (m_children & ButtonGroups) {
+        m_buttonGroups->write(writer, QStringLiteral("buttongroups"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomUI::setElementAuthor(const QString& a)
+{
+    m_children |= Author;
+    m_author = a;
+}
+
+void DomUI::setElementComment(const QString& a)
+{
+    m_children |= Comment;
+    m_comment = a;
+}
+
+void DomUI::setElementExportMacro(const QString& a)
+{
+    m_children |= ExportMacro;
+    m_exportMacro = a;
+}
+
+void DomUI::setElementClass(const QString& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+DomWidget* DomUI::takeElementWidget() 
+{
+    DomWidget* a = m_widget;
+    m_widget = 0;
+    m_children ^= Widget;
+    return a;
+}
+
+void DomUI::setElementWidget(DomWidget* a)
+{
+    delete m_widget;
+    m_children |= Widget;
+    m_widget = a;
+}
+
+DomLayoutDefault* DomUI::takeElementLayoutDefault() 
+{
+    DomLayoutDefault* a = m_layoutDefault;
+    m_layoutDefault = 0;
+    m_children ^= LayoutDefault;
+    return a;
+}
+
+void DomUI::setElementLayoutDefault(DomLayoutDefault* a)
+{
+    delete m_layoutDefault;
+    m_children |= LayoutDefault;
+    m_layoutDefault = a;
+}
+
+DomLayoutFunction* DomUI::takeElementLayoutFunction() 
+{
+    DomLayoutFunction* a = m_layoutFunction;
+    m_layoutFunction = 0;
+    m_children ^= LayoutFunction;
+    return a;
+}
+
+void DomUI::setElementLayoutFunction(DomLayoutFunction* a)
+{
+    delete m_layoutFunction;
+    m_children |= LayoutFunction;
+    m_layoutFunction = a;
+}
+
+void DomUI::setElementPixmapFunction(const QString& a)
+{
+    m_children |= PixmapFunction;
+    m_pixmapFunction = a;
+}
+
+DomCustomWidgets* DomUI::takeElementCustomWidgets() 
+{
+    DomCustomWidgets* a = m_customWidgets;
+    m_customWidgets = 0;
+    m_children ^= CustomWidgets;
+    return a;
+}
+
+void DomUI::setElementCustomWidgets(DomCustomWidgets* a)
+{
+    delete m_customWidgets;
+    m_children |= CustomWidgets;
+    m_customWidgets = a;
+}
+
+DomTabStops* DomUI::takeElementTabStops() 
+{
+    DomTabStops* a = m_tabStops;
+    m_tabStops = 0;
+    m_children ^= TabStops;
+    return a;
+}
+
+void DomUI::setElementTabStops(DomTabStops* a)
+{
+    delete m_tabStops;
+    m_children |= TabStops;
+    m_tabStops = a;
+}
+
+DomImages* DomUI::takeElementImages() 
+{
+    DomImages* a = m_images;
+    m_images = 0;
+    m_children ^= Images;
+    return a;
+}
+
+void DomUI::setElementImages(DomImages* a)
+{
+    delete m_images;
+    m_children |= Images;
+    m_images = a;
+}
+
+DomIncludes* DomUI::takeElementIncludes() 
+{
+    DomIncludes* a = m_includes;
+    m_includes = 0;
+    m_children ^= Includes;
+    return a;
+}
+
+void DomUI::setElementIncludes(DomIncludes* a)
+{
+    delete m_includes;
+    m_children |= Includes;
+    m_includes = a;
+}
+
+DomResources* DomUI::takeElementResources() 
+{
+    DomResources* a = m_resources;
+    m_resources = 0;
+    m_children ^= Resources;
+    return a;
+}
+
+void DomUI::setElementResources(DomResources* a)
+{
+    delete m_resources;
+    m_children |= Resources;
+    m_resources = a;
+}
+
+DomConnections* DomUI::takeElementConnections() 
+{
+    DomConnections* a = m_connections;
+    m_connections = 0;
+    m_children ^= Connections;
+    return a;
+}
+
+void DomUI::setElementConnections(DomConnections* a)
+{
+    delete m_connections;
+    m_children |= Connections;
+    m_connections = a;
+}
+
+DomDesignerData* DomUI::takeElementDesignerdata() 
+{
+    DomDesignerData* a = m_designerdata;
+    m_designerdata = 0;
+    m_children ^= Designerdata;
+    return a;
+}
+
+void DomUI::setElementDesignerdata(DomDesignerData* a)
+{
+    delete m_designerdata;
+    m_children |= Designerdata;
+    m_designerdata = a;
+}
+
+DomSlots* DomUI::takeElementSlots() 
+{
+    DomSlots* a = m_slots;
+    m_slots = 0;
+    m_children ^= Slots;
+    return a;
+}
+
+void DomUI::setElementSlots(DomSlots* a)
+{
+    delete m_slots;
+    m_children |= Slots;
+    m_slots = a;
+}
+
+DomButtonGroups* DomUI::takeElementButtonGroups() 
+{
+    DomButtonGroups* a = m_buttonGroups;
+    m_buttonGroups = 0;
+    m_children ^= ButtonGroups;
+    return a;
+}
+
+void DomUI::setElementButtonGroups(DomButtonGroups* a)
+{
+    delete m_buttonGroups;
+    m_children |= ButtonGroups;
+    m_buttonGroups = a;
+}
+
+void DomUI::clearElementAuthor()
+{
+    m_children &= ~Author;
+}
+
+void DomUI::clearElementComment()
+{
+    m_children &= ~Comment;
+}
+
+void DomUI::clearElementExportMacro()
+{
+    m_children &= ~ExportMacro;
+}
+
+void DomUI::clearElementClass()
+{
+    m_children &= ~Class;
+}
+
+void DomUI::clearElementWidget()
+{
+    delete m_widget;
+    m_widget = 0;
+    m_children &= ~Widget;
+}
+
+void DomUI::clearElementLayoutDefault()
+{
+    delete m_layoutDefault;
+    m_layoutDefault = 0;
+    m_children &= ~LayoutDefault;
+}
+
+void DomUI::clearElementLayoutFunction()
+{
+    delete m_layoutFunction;
+    m_layoutFunction = 0;
+    m_children &= ~LayoutFunction;
+}
+
+void DomUI::clearElementPixmapFunction()
+{
+    m_children &= ~PixmapFunction;
+}
+
+void DomUI::clearElementCustomWidgets()
+{
+    delete m_customWidgets;
+    m_customWidgets = 0;
+    m_children &= ~CustomWidgets;
+}
+
+void DomUI::clearElementTabStops()
+{
+    delete m_tabStops;
+    m_tabStops = 0;
+    m_children &= ~TabStops;
+}
+
+void DomUI::clearElementImages()
+{
+    delete m_images;
+    m_images = 0;
+    m_children &= ~Images;
+}
+
+void DomUI::clearElementIncludes()
+{
+    delete m_includes;
+    m_includes = 0;
+    m_children &= ~Includes;
+}
+
+void DomUI::clearElementResources()
+{
+    delete m_resources;
+    m_resources = 0;
+    m_children &= ~Resources;
+}
+
+void DomUI::clearElementConnections()
+{
+    delete m_connections;
+    m_connections = 0;
+    m_children &= ~Connections;
+}
+
+void DomUI::clearElementDesignerdata()
+{
+    delete m_designerdata;
+    m_designerdata = 0;
+    m_children &= ~Designerdata;
+}
+
+void DomUI::clearElementSlots()
+{
+    delete m_slots;
+    m_slots = 0;
+    m_children &= ~Slots;
+}
+
+void DomUI::clearElementButtonGroups()
+{
+    delete m_buttonGroups;
+    m_buttonGroups = 0;
+    m_children &= ~ButtonGroups;
+}
+
+void DomIncludes::clear(bool clear_all)
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomIncludes::DomIncludes()
+{
+    m_children = 0;
+}
+
+DomIncludes::~DomIncludes()
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+}
+
+void DomIncludes::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("include")) {
+                DomInclude *v = new DomInclude();
+                v->read(reader);
+                m_include.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomIncludes::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("includes") : tagName.toLower());
+
+    for (int i = 0; i < m_include.size(); ++i) {
+        DomInclude* v = m_include[i];
+        v->write(writer, QStringLiteral("include"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomIncludes::setElementInclude(const QList<DomInclude*>& a)
+{
+    m_children |= Include;
+    m_include = a;
+}
+
+void DomInclude::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_location = false;
+    m_has_attr_impldecl = false;
+    }
+
+    m_children = 0;
+}
+
+DomInclude::DomInclude()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+    m_has_attr_impldecl = false;
+    m_text.clear();
+}
+
+DomInclude::~DomInclude()
+{
+}
+
+void DomInclude::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("impldecl")) {
+            setAttributeImpldecl(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomInclude::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("include") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QStringLiteral("location"), attributeLocation());
+
+    if (hasAttributeImpldecl())
+        writer.writeAttribute(QStringLiteral("impldecl"), attributeImpldecl());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResources::clear(bool clear_all)
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomResources::DomResources()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomResources::~DomResources()
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+}
+
+void DomResources::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("include")) {
+                DomResource *v = new DomResource();
+                v->read(reader);
+                m_include.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomResources::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resources") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    for (int i = 0; i < m_include.size(); ++i) {
+        DomResource* v = m_include[i];
+        v->write(writer, QStringLiteral("include"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResources::setElementInclude(const QList<DomResource*>& a)
+{
+    m_children |= Include;
+    m_include = a;
+}
+
+void DomResource::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_location = false;
+    }
+
+    m_children = 0;
+}
+
+DomResource::DomResource()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+}
+
+DomResource::~DomResource()
+{
+}
+
+void DomResource::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomResource::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resource") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QStringLiteral("location"), attributeLocation());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomActionGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomActionGroup::DomActionGroup()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomActionGroup::~DomActionGroup()
+{
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomActionGroup::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("action")) {
+                DomAction *v = new DomAction();
+                v->read(reader);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(reader);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomActionGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actiongroup") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    for (int i = 0; i < m_action.size(); ++i) {
+        DomAction* v = m_action[i];
+        v->write(writer, QStringLiteral("action"));
+    }
+    for (int i = 0; i < m_actionGroup.size(); ++i) {
+        DomActionGroup* v = m_actionGroup[i];
+        v->write(writer, QStringLiteral("actiongroup"));
+    }
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QStringLiteral("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomActionGroup::setElementAction(const QList<DomAction*>& a)
+{
+    m_children |= Action;
+    m_action = a;
+}
+
+void DomActionGroup::setElementActionGroup(const QList<DomActionGroup*>& a)
+{
+    m_children |= ActionGroup;
+    m_actionGroup = a;
+}
+
+void DomActionGroup::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomActionGroup::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomAction::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_menu = false;
+    }
+
+    m_children = 0;
+}
+
+DomAction::DomAction()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_has_attr_menu = false;
+}
+
+DomAction::~DomAction()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomAction::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("menu")) {
+            setAttributeMenu(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomAction::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("action") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (hasAttributeMenu())
+        writer.writeAttribute(QStringLiteral("menu"), attributeMenu());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QStringLiteral("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomAction::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomAction::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomActionRef::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomActionRef::DomActionRef()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomActionRef::~DomActionRef()
+{
+}
+
+void DomActionRef::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomActionRef::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actionref") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomButtonGroup::DomButtonGroup()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomButtonGroup::~DomButtonGroup()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomButtonGroup::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomButtonGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroup") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QStringLiteral("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroup::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomButtonGroup::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomButtonGroups::clear(bool clear_all)
+{
+    qDeleteAll(m_buttonGroup);
+    m_buttonGroup.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomButtonGroups::DomButtonGroups()
+{
+    m_children = 0;
+}
+
+DomButtonGroups::~DomButtonGroups()
+{
+    qDeleteAll(m_buttonGroup);
+    m_buttonGroup.clear();
+}
+
+void DomButtonGroups::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("buttongroup")) {
+                DomButtonGroup *v = new DomButtonGroup();
+                v->read(reader);
+                m_buttonGroup.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomButtonGroups::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroups") : tagName.toLower());
+
+    for (int i = 0; i < m_buttonGroup.size(); ++i) {
+        DomButtonGroup* v = m_buttonGroup[i];
+        v->write(writer, QStringLiteral("buttongroup"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroups::setElementButtonGroup(const QList<DomButtonGroup*>& a)
+{
+    m_children |= ButtonGroup;
+    m_buttonGroup = a;
+}
+
+void DomImages::clear(bool clear_all)
+{
+    qDeleteAll(m_image);
+    m_image.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomImages::DomImages()
+{
+    m_children = 0;
+}
+
+DomImages::~DomImages()
+{
+    qDeleteAll(m_image);
+    m_image.clear();
+}
+
+void DomImages::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("image")) {
+                DomImage *v = new DomImage();
+                v->read(reader);
+                m_image.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomImages::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("images") : tagName.toLower());
+
+    for (int i = 0; i < m_image.size(); ++i) {
+        DomImage* v = m_image[i];
+        v->write(writer, QStringLiteral("image"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomImages::setElementImage(const QList<DomImage*>& a)
+{
+    m_children |= Image;
+    m_image = a;
+}
+
+void DomImage::clear(bool clear_all)
+{
+    delete m_data;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+    m_data = 0;
+}
+
+DomImage::DomImage()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_data = 0;
+}
+
+DomImage::~DomImage()
+{
+    delete m_data;
+}
+
+void DomImage::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("data")) {
+                DomImageData *v = new DomImageData();
+                v->read(reader);
+                setElementData(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomImage::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("image") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (m_children & Data) {
+        m_data->write(writer, QStringLiteral("data"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomImageData* DomImage::takeElementData() 
+{
+    DomImageData* a = m_data;
+    m_data = 0;
+    m_children ^= Data;
+    return a;
+}
+
+void DomImage::setElementData(DomImageData* a)
+{
+    delete m_data;
+    m_children |= Data;
+    m_data = a;
+}
+
+void DomImage::clearElementData()
+{
+    delete m_data;
+    m_data = 0;
+    m_children &= ~Data;
+}
+
+void DomImageData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_format = false;
+    m_has_attr_length = false;
+    m_attr_length = 0;
+    }
+
+    m_children = 0;
+}
+
+DomImageData::DomImageData()
+{
+    m_children = 0;
+    m_has_attr_format = false;
+    m_has_attr_length = false;
+    m_attr_length = 0;
+    m_text.clear();
+}
+
+DomImageData::~DomImageData()
+{
+}
+
+void DomImageData::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("format")) {
+            setAttributeFormat(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("length")) {
+            setAttributeLength(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomImageData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("imagedata") : tagName.toLower());
+
+    if (hasAttributeFormat())
+        writer.writeAttribute(QStringLiteral("format"), attributeFormat());
+
+    if (hasAttributeLength())
+        writer.writeAttribute(QStringLiteral("length"), QString::number(attributeLength()));
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidgets::clear(bool clear_all)
+{
+    qDeleteAll(m_customWidget);
+    m_customWidget.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomCustomWidgets::DomCustomWidgets()
+{
+    m_children = 0;
+}
+
+DomCustomWidgets::~DomCustomWidgets()
+{
+    qDeleteAll(m_customWidget);
+    m_customWidget.clear();
+}
+
+void DomCustomWidgets::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("customwidget")) {
+                DomCustomWidget *v = new DomCustomWidget();
+                v->read(reader);
+                m_customWidget.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomCustomWidgets::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidgets") : tagName.toLower());
+
+    for (int i = 0; i < m_customWidget.size(); ++i) {
+        DomCustomWidget* v = m_customWidget[i];
+        v->write(writer, QStringLiteral("customwidget"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidgets::setElementCustomWidget(const QList<DomCustomWidget*>& a)
+{
+    m_children |= CustomWidget;
+    m_customWidget = a;
+}
+
+void DomHeader::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_location = false;
+    }
+
+    m_children = 0;
+}
+
+DomHeader::DomHeader()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+    m_text.clear();
+}
+
+DomHeader::~DomHeader()
+{
+}
+
+void DomHeader::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomHeader::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("header") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QStringLiteral("location"), attributeLocation());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidget::clear(bool clear_all)
+{
+    delete m_header;
+    delete m_sizeHint;
+    delete m_sizePolicy;
+    delete m_script;
+    delete m_properties;
+    delete m_slots;
+    delete m_propertyspecifications;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_header = 0;
+    m_sizeHint = 0;
+    m_container = 0;
+    m_sizePolicy = 0;
+    m_script = 0;
+    m_properties = 0;
+    m_slots = 0;
+    m_propertyspecifications = 0;
+}
+
+DomCustomWidget::DomCustomWidget()
+{
+    m_children = 0;
+    m_header = 0;
+    m_sizeHint = 0;
+    m_container = 0;
+    m_sizePolicy = 0;
+    m_script = 0;
+    m_properties = 0;
+    m_slots = 0;
+    m_propertyspecifications = 0;
+}
+
+DomCustomWidget::~DomCustomWidget()
+{
+    delete m_header;
+    delete m_sizeHint;
+    delete m_sizePolicy;
+    delete m_script;
+    delete m_properties;
+    delete m_slots;
+    delete m_propertyspecifications;
+}
+
+void DomCustomWidget::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("class")) {
+                setElementClass(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("extends")) {
+                setElementExtends(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("header")) {
+                DomHeader *v = new DomHeader();
+                v->read(reader);
+                setElementHeader(v);
+                continue;
+            }
+            if (tag == QStringLiteral("sizehint")) {
+                DomSize *v = new DomSize();
+                v->read(reader);
+                setElementSizeHint(v);
+                continue;
+            }
+            if (tag == QStringLiteral("addpagemethod")) {
+                setElementAddPageMethod(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("container")) {
+                setElementContainer(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("sizepolicy")) {
+                DomSizePolicyData *v = new DomSizePolicyData();
+                v->read(reader);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QStringLiteral("pixmap")) {
+                setElementPixmap(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("script")) {
+                DomScript *v = new DomScript();
+                v->read(reader);
+                setElementScript(v);
+                continue;
+            }
+            if (tag == QStringLiteral("properties")) {
+                DomProperties *v = new DomProperties();
+                v->read(reader);
+                setElementProperties(v);
+                continue;
+            }
+            if (tag == QStringLiteral("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(reader);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QStringLiteral("propertyspecifications")) {
+                DomPropertySpecifications *v = new DomPropertySpecifications();
+                v->read(reader);
+                setElementPropertyspecifications(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomCustomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidget") : tagName.toLower());
+
+    if (m_children & Class) {
+        writer.writeTextElement(QStringLiteral("class"), m_class);
+    }
+
+    if (m_children & Extends) {
+        writer.writeTextElement(QStringLiteral("extends"), m_extends);
+    }
+
+    if (m_children & Header) {
+        m_header->write(writer, QStringLiteral("header"));
+    }
+
+    if (m_children & SizeHint) {
+        m_sizeHint->write(writer, QStringLiteral("sizehint"));
+    }
+
+    if (m_children & AddPageMethod) {
+        writer.writeTextElement(QStringLiteral("addpagemethod"), m_addPageMethod);
+    }
+
+    if (m_children & Container) {
+        writer.writeTextElement(QStringLiteral("container"), QString::number(m_container));
+    }
+
+    if (m_children & SizePolicy) {
+        m_sizePolicy->write(writer, QStringLiteral("sizepolicy"));
+    }
+
+    if (m_children & Pixmap) {
+        writer.writeTextElement(QStringLiteral("pixmap"), m_pixmap);
+    }
+
+    if (m_children & Script) {
+        m_script->write(writer, QStringLiteral("script"));
+    }
+
+    if (m_children & Properties) {
+        m_properties->write(writer, QStringLiteral("properties"));
+    }
+
+    if (m_children & Slots) {
+        m_slots->write(writer, QStringLiteral("slots"));
+    }
+
+    if (m_children & Propertyspecifications) {
+        m_propertyspecifications->write(writer, QStringLiteral("propertyspecifications"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidget::setElementClass(const QString& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+void DomCustomWidget::setElementExtends(const QString& a)
+{
+    m_children |= Extends;
+    m_extends = a;
+}
+
+DomHeader* DomCustomWidget::takeElementHeader() 
+{
+    DomHeader* a = m_header;
+    m_header = 0;
+    m_children ^= Header;
+    return a;
+}
+
+void DomCustomWidget::setElementHeader(DomHeader* a)
+{
+    delete m_header;
+    m_children |= Header;
+    m_header = a;
+}
+
+DomSize* DomCustomWidget::takeElementSizeHint() 
+{
+    DomSize* a = m_sizeHint;
+    m_sizeHint = 0;
+    m_children ^= SizeHint;
+    return a;
+}
+
+void DomCustomWidget::setElementSizeHint(DomSize* a)
+{
+    delete m_sizeHint;
+    m_children |= SizeHint;
+    m_sizeHint = a;
+}
+
+void DomCustomWidget::setElementAddPageMethod(const QString& a)
+{
+    m_children |= AddPageMethod;
+    m_addPageMethod = a;
+}
+
+void DomCustomWidget::setElementContainer(int a)
+{
+    m_children |= Container;
+    m_container = a;
+}
+
+DomSizePolicyData* DomCustomWidget::takeElementSizePolicy() 
+{
+    DomSizePolicyData* a = m_sizePolicy;
+    m_sizePolicy = 0;
+    m_children ^= SizePolicy;
+    return a;
+}
+
+void DomCustomWidget::setElementSizePolicy(DomSizePolicyData* a)
+{
+    delete m_sizePolicy;
+    m_children |= SizePolicy;
+    m_sizePolicy = a;
+}
+
+void DomCustomWidget::setElementPixmap(const QString& a)
+{
+    m_children |= Pixmap;
+    m_pixmap = a;
+}
+
+DomScript* DomCustomWidget::takeElementScript() 
+{
+    DomScript* a = m_script;
+    m_script = 0;
+    m_children ^= Script;
+    return a;
+}
+
+void DomCustomWidget::setElementScript(DomScript* a)
+{
+    delete m_script;
+    m_children |= Script;
+    m_script = a;
+}
+
+DomProperties* DomCustomWidget::takeElementProperties() 
+{
+    DomProperties* a = m_properties;
+    m_properties = 0;
+    m_children ^= Properties;
+    return a;
+}
+
+void DomCustomWidget::setElementProperties(DomProperties* a)
+{
+    delete m_properties;
+    m_children |= Properties;
+    m_properties = a;
+}
+
+DomSlots* DomCustomWidget::takeElementSlots() 
+{
+    DomSlots* a = m_slots;
+    m_slots = 0;
+    m_children ^= Slots;
+    return a;
+}
+
+void DomCustomWidget::setElementSlots(DomSlots* a)
+{
+    delete m_slots;
+    m_children |= Slots;
+    m_slots = a;
+}
+
+DomPropertySpecifications* DomCustomWidget::takeElementPropertyspecifications() 
+{
+    DomPropertySpecifications* a = m_propertyspecifications;
+    m_propertyspecifications = 0;
+    m_children ^= Propertyspecifications;
+    return a;
+}
+
+void DomCustomWidget::setElementPropertyspecifications(DomPropertySpecifications* a)
+{
+    delete m_propertyspecifications;
+    m_children |= Propertyspecifications;
+    m_propertyspecifications = a;
+}
+
+void DomCustomWidget::clearElementClass()
+{
+    m_children &= ~Class;
+}
+
+void DomCustomWidget::clearElementExtends()
+{
+    m_children &= ~Extends;
+}
+
+void DomCustomWidget::clearElementHeader()
+{
+    delete m_header;
+    m_header = 0;
+    m_children &= ~Header;
+}
+
+void DomCustomWidget::clearElementSizeHint()
+{
+    delete m_sizeHint;
+    m_sizeHint = 0;
+    m_children &= ~SizeHint;
+}
+
+void DomCustomWidget::clearElementAddPageMethod()
+{
+    m_children &= ~AddPageMethod;
+}
+
+void DomCustomWidget::clearElementContainer()
+{
+    m_children &= ~Container;
+}
+
+void DomCustomWidget::clearElementSizePolicy()
+{
+    delete m_sizePolicy;
+    m_sizePolicy = 0;
+    m_children &= ~SizePolicy;
+}
+
+void DomCustomWidget::clearElementPixmap()
+{
+    m_children &= ~Pixmap;
+}
+
+void DomCustomWidget::clearElementScript()
+{
+    delete m_script;
+    m_script = 0;
+    m_children &= ~Script;
+}
+
+void DomCustomWidget::clearElementProperties()
+{
+    delete m_properties;
+    m_properties = 0;
+    m_children &= ~Properties;
+}
+
+void DomCustomWidget::clearElementSlots()
+{
+    delete m_slots;
+    m_slots = 0;
+    m_children &= ~Slots;
+}
+
+void DomCustomWidget::clearElementPropertyspecifications()
+{
+    delete m_propertyspecifications;
+    m_propertyspecifications = 0;
+    m_children &= ~Propertyspecifications;
+}
+
+void DomProperties::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomProperties::DomProperties()
+{
+    m_children = 0;
+}
+
+DomProperties::~DomProperties()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomProperties::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomPropertyData *v = new DomPropertyData();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomProperties::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("properties") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomPropertyData* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomProperties::setElementProperty(const QList<DomPropertyData*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomPropertyData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_type = false;
+    }
+
+    m_children = 0;
+}
+
+DomPropertyData::DomPropertyData()
+{
+    m_children = 0;
+    m_has_attr_type = false;
+}
+
+DomPropertyData::~DomPropertyData()
+{
+}
+
+void DomPropertyData::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomPropertyData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertydata") : tagName.toLower());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QStringLiteral("type"), attributeType());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicyData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_horData = 0;
+    m_verData = 0;
+}
+
+DomSizePolicyData::DomSizePolicyData()
+{
+    m_children = 0;
+    m_horData = 0;
+    m_verData = 0;
+}
+
+DomSizePolicyData::~DomSizePolicyData()
+{
+}
+
+void DomSizePolicyData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("hordata")) {
+                setElementHorData(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("verdata")) {
+                setElementVerData(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSizePolicyData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicydata") : tagName.toLower());
+
+    if (m_children & HorData) {
+        writer.writeTextElement(QStringLiteral("hordata"), QString::number(m_horData));
+    }
+
+    if (m_children & VerData) {
+        writer.writeTextElement(QStringLiteral("verdata"), QString::number(m_verData));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicyData::setElementHorData(int a)
+{
+    m_children |= HorData;
+    m_horData = a;
+}
+
+void DomSizePolicyData::setElementVerData(int a)
+{
+    m_children |= VerData;
+    m_verData = a;
+}
+
+void DomSizePolicyData::clearElementHorData()
+{
+    m_children &= ~HorData;
+}
+
+void DomSizePolicyData::clearElementVerData()
+{
+    m_children &= ~VerData;
+}
+
+void DomLayoutDefault::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_spacing = false;
+    m_attr_spacing = 0;
+    m_has_attr_margin = false;
+    m_attr_margin = 0;
+    }
+
+    m_children = 0;
+}
+
+DomLayoutDefault::DomLayoutDefault()
+{
+    m_children = 0;
+    m_has_attr_spacing = false;
+    m_attr_spacing = 0;
+    m_has_attr_margin = false;
+    m_attr_margin = 0;
+}
+
+DomLayoutDefault::~DomLayoutDefault()
+{
+}
+
+void DomLayoutDefault::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("spacing")) {
+            setAttributeSpacing(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("margin")) {
+            setAttributeMargin(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomLayoutDefault::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutdefault") : tagName.toLower());
+
+    if (hasAttributeSpacing())
+        writer.writeAttribute(QStringLiteral("spacing"), QString::number(attributeSpacing()));
+
+    if (hasAttributeMargin())
+        writer.writeAttribute(QStringLiteral("margin"), QString::number(attributeMargin()));
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomLayoutFunction::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_spacing = false;
+    m_has_attr_margin = false;
+    }
+
+    m_children = 0;
+}
+
+DomLayoutFunction::DomLayoutFunction()
+{
+    m_children = 0;
+    m_has_attr_spacing = false;
+    m_has_attr_margin = false;
+}
+
+DomLayoutFunction::~DomLayoutFunction()
+{
+}
+
+void DomLayoutFunction::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("spacing")) {
+            setAttributeSpacing(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("margin")) {
+            setAttributeMargin(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomLayoutFunction::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutfunction") : tagName.toLower());
+
+    if (hasAttributeSpacing())
+        writer.writeAttribute(QStringLiteral("spacing"), attributeSpacing());
+
+    if (hasAttributeMargin())
+        writer.writeAttribute(QStringLiteral("margin"), attributeMargin());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTabStops::clear(bool clear_all)
+{
+    m_tabStop.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomTabStops::DomTabStops()
+{
+    m_children = 0;
+}
+
+DomTabStops::~DomTabStops()
+{
+    m_tabStop.clear();
+}
+
+void DomTabStops::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("tabstop")) {
+                m_tabStop.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomTabStops::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("tabstops") : tagName.toLower());
+
+    for (int i = 0; i < m_tabStop.size(); ++i) {
+        QString v = m_tabStop[i];
+        writer.writeTextElement(QStringLiteral("tabstop"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTabStops::setElementTabStop(const QStringList& a)
+{
+    m_children |= TabStop;
+    m_tabStop = a;
+}
+
+void DomLayout::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_stretch = false;
+    m_has_attr_rowStretch = false;
+    m_has_attr_columnStretch = false;
+    m_has_attr_rowMinimumHeight = false;
+    m_has_attr_columnMinimumWidth = false;
+    }
+
+    m_children = 0;
+}
+
+DomLayout::DomLayout()
+{
+    m_children = 0;
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_stretch = false;
+    m_has_attr_rowStretch = false;
+    m_has_attr_columnStretch = false;
+    m_has_attr_rowMinimumHeight = false;
+    m_has_attr_columnMinimumWidth = false;
+}
+
+DomLayout::~DomLayout()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+}
+
+void DomLayout::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("class")) {
+            setAttributeClass(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("stretch")) {
+            setAttributeStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("rowstretch")) {
+            setAttributeRowStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("columnstretch")) {
+            setAttributeColumnStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("rowminimumheight")) {
+            setAttributeRowMinimumHeight(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("columnminimumwidth")) {
+            setAttributeColumnMinimumWidth(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("item")) {
+                DomLayoutItem *v = new DomLayoutItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomLayout::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layout") : tagName.toLower());
+
+    if (hasAttributeClass())
+        writer.writeAttribute(QStringLiteral("class"), attributeClass());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (hasAttributeStretch())
+        writer.writeAttribute(QStringLiteral("stretch"), attributeStretch());
+
+    if (hasAttributeRowStretch())
+        writer.writeAttribute(QStringLiteral("rowstretch"), attributeRowStretch());
+
+    if (hasAttributeColumnStretch())
+        writer.writeAttribute(QStringLiteral("columnstretch"), attributeColumnStretch());
+
+    if (hasAttributeRowMinimumHeight())
+        writer.writeAttribute(QStringLiteral("rowminimumheight"), attributeRowMinimumHeight());
+
+    if (hasAttributeColumnMinimumWidth())
+        writer.writeAttribute(QStringLiteral("columnminimumwidth"), attributeColumnMinimumWidth());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QStringLiteral("attribute"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomLayoutItem* v = m_item[i];
+        v->write(writer, QStringLiteral("item"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomLayout::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomLayout::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomLayout::setElementItem(const QList<DomLayoutItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomLayoutItem::clear(bool clear_all)
+{
+    delete m_widget;
+    delete m_layout;
+    delete m_spacer;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    m_has_attr_rowSpan = false;
+    m_attr_rowSpan = 0;
+    m_has_attr_colSpan = false;
+    m_attr_colSpan = 0;
+    m_has_attr_alignment = false;
+    }
+
+    m_kind = Unknown;
+
+    m_widget = 0;
+    m_layout = 0;
+    m_spacer = 0;
+}
+
+DomLayoutItem::DomLayoutItem()
+{
+    m_kind = Unknown;
+
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    m_has_attr_rowSpan = false;
+    m_attr_rowSpan = 0;
+    m_has_attr_colSpan = false;
+    m_attr_colSpan = 0;
+    m_has_attr_alignment = false;
+    m_widget = 0;
+    m_layout = 0;
+    m_spacer = 0;
+}
+
+DomLayoutItem::~DomLayoutItem()
+{
+    delete m_widget;
+    delete m_layout;
+    delete m_spacer;
+}
+
+void DomLayoutItem::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("row")) {
+            setAttributeRow(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("column")) {
+            setAttributeColumn(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("rowspan")) {
+            setAttributeRowSpan(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("colspan")) {
+            setAttributeColSpan(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("alignment")) {
+            setAttributeAlignment(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QStringLiteral("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(reader);
+                setElementLayout(v);
+                continue;
+            }
+            if (tag == QStringLiteral("spacer")) {
+                DomSpacer *v = new DomSpacer();
+                v->read(reader);
+                setElementSpacer(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomLayoutItem::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutitem") : tagName.toLower());
+
+    if (hasAttributeRow())
+        writer.writeAttribute(QStringLiteral("row"), QString::number(attributeRow()));
+
+    if (hasAttributeColumn())
+        writer.writeAttribute(QStringLiteral("column"), QString::number(attributeColumn()));
+
+    if (hasAttributeRowSpan())
+        writer.writeAttribute(QStringLiteral("rowspan"), QString::number(attributeRowSpan()));
+
+    if (hasAttributeColSpan())
+        writer.writeAttribute(QStringLiteral("colspan"), QString::number(attributeColSpan()));
+
+    if (hasAttributeAlignment())
+        writer.writeAttribute(QStringLiteral("alignment"), attributeAlignment());
+
+    switch (kind()) {
+        case Widget: {
+            DomWidget* v = elementWidget();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("widget"));
+            }
+            break;
+        }
+        case Layout: {
+            DomLayout* v = elementLayout();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("layout"));
+            }
+            break;
+        }
+        case Spacer: {
+            DomSpacer* v = elementSpacer();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("spacer"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomWidget* DomLayoutItem::takeElementWidget() 
+{
+    DomWidget* a = m_widget;
+    m_widget = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementWidget(DomWidget* a)
+{
+    clear(false);
+    m_kind = Widget;
+    m_widget = a;
+}
+
+DomLayout* DomLayoutItem::takeElementLayout() 
+{
+    DomLayout* a = m_layout;
+    m_layout = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementLayout(DomLayout* a)
+{
+    clear(false);
+    m_kind = Layout;
+    m_layout = a;
+}
+
+DomSpacer* DomLayoutItem::takeElementSpacer() 
+{
+    DomSpacer* a = m_spacer;
+    m_spacer = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementSpacer(DomSpacer* a)
+{
+    clear(false);
+    m_kind = Spacer;
+    m_spacer = a;
+}
+
+void DomRow::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomRow::DomRow()
+{
+    m_children = 0;
+}
+
+DomRow::~DomRow()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomRow::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomRow::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("row") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRow::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomColumn::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomColumn::DomColumn()
+{
+    m_children = 0;
+}
+
+DomColumn::~DomColumn()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomColumn::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomColumn::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("column") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColumn::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomItem::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    }
+
+    m_children = 0;
+}
+
+DomItem::DomItem()
+{
+    m_children = 0;
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+}
+
+DomItem::~DomItem()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+}
+
+void DomItem::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("row")) {
+            setAttributeRow(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QStringLiteral("column")) {
+            setAttributeColumn(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("item")) {
+                DomItem *v = new DomItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomItem::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("item") : tagName.toLower());
+
+    if (hasAttributeRow())
+        writer.writeAttribute(QStringLiteral("row"), QString::number(attributeRow()));
+
+    if (hasAttributeColumn())
+        writer.writeAttribute(QStringLiteral("column"), QString::number(attributeColumn()));
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomItem* v = m_item[i];
+        v->write(writer, QStringLiteral("item"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomItem::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomItem::setElementItem(const QList<DomItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomWidget::clear(bool clear_all)
+{
+    m_class.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_script);
+    m_script.clear();
+    qDeleteAll(m_widgetData);
+    m_widgetData.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_row);
+    m_row.clear();
+    qDeleteAll(m_column);
+    m_column.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+    qDeleteAll(m_layout);
+    m_layout.clear();
+    qDeleteAll(m_widget);
+    m_widget.clear();
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_addAction);
+    m_addAction.clear();
+    m_zOrder.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_native = false;
+    m_attr_native = false;
+    }
+
+    m_children = 0;
+}
+
+DomWidget::DomWidget()
+{
+    m_children = 0;
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_native = false;
+    m_attr_native = false;
+}
+
+DomWidget::~DomWidget()
+{
+    m_class.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_script);
+    m_script.clear();
+    qDeleteAll(m_widgetData);
+    m_widgetData.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_row);
+    m_row.clear();
+    qDeleteAll(m_column);
+    m_column.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+    qDeleteAll(m_layout);
+    m_layout.clear();
+    qDeleteAll(m_widget);
+    m_widget.clear();
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_addAction);
+    m_addAction.clear();
+    m_zOrder.clear();
+}
+
+void DomWidget::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("class")) {
+            setAttributeClass(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("native")) {
+            setAttributeNative((attribute.value().toString() == QLatin1String("true") ? true : false));
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("class")) {
+                m_class.append(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("script")) {
+                DomScript *v = new DomScript();
+                v->read(reader);
+                m_script.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("widgetdata")) {
+                DomWidgetData *v = new DomWidgetData();
+                v->read(reader);
+                m_widgetData.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("row")) {
+                DomRow *v = new DomRow();
+                v->read(reader);
+                m_row.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("column")) {
+                DomColumn *v = new DomColumn();
+                v->read(reader);
+                m_column.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("item")) {
+                DomItem *v = new DomItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(reader);
+                m_layout.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                m_widget.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("action")) {
+                DomAction *v = new DomAction();
+                v->read(reader);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(reader);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("addaction")) {
+                DomActionRef *v = new DomActionRef();
+                v->read(reader);
+                m_addAction.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("zorder")) {
+                m_zOrder.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widget") : tagName.toLower());
+
+    if (hasAttributeClass())
+        writer.writeAttribute(QStringLiteral("class"), attributeClass());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (hasAttributeNative())
+        writer.writeAttribute(QStringLiteral("native"), (attributeNative() ? QLatin1String("true") : QLatin1String("false")));
+
+    for (int i = 0; i < m_class.size(); ++i) {
+        QString v = m_class[i];
+        writer.writeTextElement(QStringLiteral("class"), v);
+    }
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    for (int i = 0; i < m_script.size(); ++i) {
+        DomScript* v = m_script[i];
+        v->write(writer, QStringLiteral("script"));
+    }
+    for (int i = 0; i < m_widgetData.size(); ++i) {
+        DomWidgetData* v = m_widgetData[i];
+        v->write(writer, QStringLiteral("widgetdata"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QStringLiteral("attribute"));
+    }
+    for (int i = 0; i < m_row.size(); ++i) {
+        DomRow* v = m_row[i];
+        v->write(writer, QStringLiteral("row"));
+    }
+    for (int i = 0; i < m_column.size(); ++i) {
+        DomColumn* v = m_column[i];
+        v->write(writer, QStringLiteral("column"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomItem* v = m_item[i];
+        v->write(writer, QStringLiteral("item"));
+    }
+    for (int i = 0; i < m_layout.size(); ++i) {
+        DomLayout* v = m_layout[i];
+        v->write(writer, QStringLiteral("layout"));
+    }
+    for (int i = 0; i < m_widget.size(); ++i) {
+        DomWidget* v = m_widget[i];
+        v->write(writer, QStringLiteral("widget"));
+    }
+    for (int i = 0; i < m_action.size(); ++i) {
+        DomAction* v = m_action[i];
+        v->write(writer, QStringLiteral("action"));
+    }
+    for (int i = 0; i < m_actionGroup.size(); ++i) {
+        DomActionGroup* v = m_actionGroup[i];
+        v->write(writer, QStringLiteral("actiongroup"));
+    }
+    for (int i = 0; i < m_addAction.size(); ++i) {
+        DomActionRef* v = m_addAction[i];
+        v->write(writer, QStringLiteral("addaction"));
+    }
+    for (int i = 0; i < m_zOrder.size(); ++i) {
+        QString v = m_zOrder[i];
+        writer.writeTextElement(QStringLiteral("zorder"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidget::setElementClass(const QStringList& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+void DomWidget::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomWidget::setElementScript(const QList<DomScript*>& a)
+{
+    m_children |= Script;
+    m_script = a;
+}
+
+void DomWidget::setElementWidgetData(const QList<DomWidgetData*>& a)
+{
+    m_children |= WidgetData;
+    m_widgetData = a;
+}
+
+void DomWidget::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomWidget::setElementRow(const QList<DomRow*>& a)
+{
+    m_children |= Row;
+    m_row = a;
+}
+
+void DomWidget::setElementColumn(const QList<DomColumn*>& a)
+{
+    m_children |= Column;
+    m_column = a;
+}
+
+void DomWidget::setElementItem(const QList<DomItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomWidget::setElementLayout(const QList<DomLayout*>& a)
+{
+    m_children |= Layout;
+    m_layout = a;
+}
+
+void DomWidget::setElementWidget(const QList<DomWidget*>& a)
+{
+    m_children |= Widget;
+    m_widget = a;
+}
+
+void DomWidget::setElementAction(const QList<DomAction*>& a)
+{
+    m_children |= Action;
+    m_action = a;
+}
+
+void DomWidget::setElementActionGroup(const QList<DomActionGroup*>& a)
+{
+    m_children |= ActionGroup;
+    m_actionGroup = a;
+}
+
+void DomWidget::setElementAddAction(const QList<DomActionRef*>& a)
+{
+    m_children |= AddAction;
+    m_addAction = a;
+}
+
+void DomWidget::setElementZOrder(const QStringList& a)
+{
+    m_children |= ZOrder;
+    m_zOrder = a;
+}
+
+void DomSpacer::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomSpacer::DomSpacer()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomSpacer::~DomSpacer()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomSpacer::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSpacer::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("spacer") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSpacer::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomColor::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_alpha = false;
+    m_attr_alpha = 0;
+    }
+
+    m_children = 0;
+    m_red = 0;
+    m_green = 0;
+    m_blue = 0;
+}
+
+DomColor::DomColor()
+{
+    m_children = 0;
+    m_has_attr_alpha = false;
+    m_attr_alpha = 0;
+    m_red = 0;
+    m_green = 0;
+    m_blue = 0;
+}
+
+DomColor::~DomColor()
+{
+}
+
+void DomColor::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("alpha")) {
+            setAttributeAlpha(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("red")) {
+                setElementRed(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("green")) {
+                setElementGreen(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("blue")) {
+                setElementBlue(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomColor::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("color") : tagName.toLower());
+
+    if (hasAttributeAlpha())
+        writer.writeAttribute(QStringLiteral("alpha"), QString::number(attributeAlpha()));
+
+    if (m_children & Red) {
+        writer.writeTextElement(QStringLiteral("red"), QString::number(m_red));
+    }
+
+    if (m_children & Green) {
+        writer.writeTextElement(QStringLiteral("green"), QString::number(m_green));
+    }
+
+    if (m_children & Blue) {
+        writer.writeTextElement(QStringLiteral("blue"), QString::number(m_blue));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColor::setElementRed(int a)
+{
+    m_children |= Red;
+    m_red = a;
+}
+
+void DomColor::setElementGreen(int a)
+{
+    m_children |= Green;
+    m_green = a;
+}
+
+void DomColor::setElementBlue(int a)
+{
+    m_children |= Blue;
+    m_blue = a;
+}
+
+void DomColor::clearElementRed()
+{
+    m_children &= ~Red;
+}
+
+void DomColor::clearElementGreen()
+{
+    m_children &= ~Green;
+}
+
+void DomColor::clearElementBlue()
+{
+    m_children &= ~Blue;
+}
+
+void DomGradientStop::clear(bool clear_all)
+{
+    delete m_color;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_position = false;
+    m_attr_position = 0.0;
+    }
+
+    m_children = 0;
+    m_color = 0;
+}
+
+DomGradientStop::DomGradientStop()
+{
+    m_children = 0;
+    m_has_attr_position = false;
+    m_attr_position = 0.0;
+    m_color = 0;
+}
+
+DomGradientStop::~DomGradientStop()
+{
+    delete m_color;
+}
+
+void DomGradientStop::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("position")) {
+            setAttributePosition(attribute.value().toString().toDouble());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomGradientStop::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradientstop") : tagName.toLower());
+
+    if (hasAttributePosition())
+        writer.writeAttribute(QStringLiteral("position"), QString::number(attributePosition(), 'f', 15));
+
+    if (m_children & Color) {
+        m_color->write(writer, QStringLiteral("color"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColor* DomGradientStop::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    m_children ^= Color;
+    return a;
+}
+
+void DomGradientStop::setElementColor(DomColor* a)
+{
+    delete m_color;
+    m_children |= Color;
+    m_color = a;
+}
+
+void DomGradientStop::clearElementColor()
+{
+    delete m_color;
+    m_color = 0;
+    m_children &= ~Color;
+}
+
+void DomGradient::clear(bool clear_all)
+{
+    qDeleteAll(m_gradientStop);
+    m_gradientStop.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_startX = false;
+    m_attr_startX = 0.0;
+    m_has_attr_startY = false;
+    m_attr_startY = 0.0;
+    m_has_attr_endX = false;
+    m_attr_endX = 0.0;
+    m_has_attr_endY = false;
+    m_attr_endY = 0.0;
+    m_has_attr_centralX = false;
+    m_attr_centralX = 0.0;
+    m_has_attr_centralY = false;
+    m_attr_centralY = 0.0;
+    m_has_attr_focalX = false;
+    m_attr_focalX = 0.0;
+    m_has_attr_focalY = false;
+    m_attr_focalY = 0.0;
+    m_has_attr_radius = false;
+    m_attr_radius = 0.0;
+    m_has_attr_angle = false;
+    m_attr_angle = 0.0;
+    m_has_attr_type = false;
+    m_has_attr_spread = false;
+    m_has_attr_coordinateMode = false;
+    }
+
+    m_children = 0;
+}
+
+DomGradient::DomGradient()
+{
+    m_children = 0;
+    m_has_attr_startX = false;
+    m_attr_startX = 0.0;
+    m_has_attr_startY = false;
+    m_attr_startY = 0.0;
+    m_has_attr_endX = false;
+    m_attr_endX = 0.0;
+    m_has_attr_endY = false;
+    m_attr_endY = 0.0;
+    m_has_attr_centralX = false;
+    m_attr_centralX = 0.0;
+    m_has_attr_centralY = false;
+    m_attr_centralY = 0.0;
+    m_has_attr_focalX = false;
+    m_attr_focalX = 0.0;
+    m_has_attr_focalY = false;
+    m_attr_focalY = 0.0;
+    m_has_attr_radius = false;
+    m_attr_radius = 0.0;
+    m_has_attr_angle = false;
+    m_attr_angle = 0.0;
+    m_has_attr_type = false;
+    m_has_attr_spread = false;
+    m_has_attr_coordinateMode = false;
+}
+
+DomGradient::~DomGradient()
+{
+    qDeleteAll(m_gradientStop);
+    m_gradientStop.clear();
+}
+
+void DomGradient::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("startx")) {
+            setAttributeStartX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("starty")) {
+            setAttributeStartY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("endx")) {
+            setAttributeEndX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("endy")) {
+            setAttributeEndY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("centralx")) {
+            setAttributeCentralX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("centraly")) {
+            setAttributeCentralY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("focalx")) {
+            setAttributeFocalX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("focaly")) {
+            setAttributeFocalY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("radius")) {
+            setAttributeRadius(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("angle")) {
+            setAttributeAngle(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QStringLiteral("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("spread")) {
+            setAttributeSpread(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("coordinatemode")) {
+            setAttributeCoordinateMode(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("gradientstop")) {
+                DomGradientStop *v = new DomGradientStop();
+                v->read(reader);
+                m_gradientStop.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomGradient::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradient") : tagName.toLower());
+
+    if (hasAttributeStartX())
+        writer.writeAttribute(QStringLiteral("startx"), QString::number(attributeStartX(), 'f', 15));
+
+    if (hasAttributeStartY())
+        writer.writeAttribute(QStringLiteral("starty"), QString::number(attributeStartY(), 'f', 15));
+
+    if (hasAttributeEndX())
+        writer.writeAttribute(QStringLiteral("endx"), QString::number(attributeEndX(), 'f', 15));
+
+    if (hasAttributeEndY())
+        writer.writeAttribute(QStringLiteral("endy"), QString::number(attributeEndY(), 'f', 15));
+
+    if (hasAttributeCentralX())
+        writer.writeAttribute(QStringLiteral("centralx"), QString::number(attributeCentralX(), 'f', 15));
+
+    if (hasAttributeCentralY())
+        writer.writeAttribute(QStringLiteral("centraly"), QString::number(attributeCentralY(), 'f', 15));
+
+    if (hasAttributeFocalX())
+        writer.writeAttribute(QStringLiteral("focalx"), QString::number(attributeFocalX(), 'f', 15));
+
+    if (hasAttributeFocalY())
+        writer.writeAttribute(QStringLiteral("focaly"), QString::number(attributeFocalY(), 'f', 15));
+
+    if (hasAttributeRadius())
+        writer.writeAttribute(QStringLiteral("radius"), QString::number(attributeRadius(), 'f', 15));
+
+    if (hasAttributeAngle())
+        writer.writeAttribute(QStringLiteral("angle"), QString::number(attributeAngle(), 'f', 15));
+
+    if (hasAttributeType())
+        writer.writeAttribute(QStringLiteral("type"), attributeType());
+
+    if (hasAttributeSpread())
+        writer.writeAttribute(QStringLiteral("spread"), attributeSpread());
+
+    if (hasAttributeCoordinateMode())
+        writer.writeAttribute(QStringLiteral("coordinatemode"), attributeCoordinateMode());
+
+    for (int i = 0; i < m_gradientStop.size(); ++i) {
+        DomGradientStop* v = m_gradientStop[i];
+        v->write(writer, QStringLiteral("gradientstop"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomGradient::setElementGradientStop(const QList<DomGradientStop*>& a)
+{
+    m_children |= GradientStop;
+    m_gradientStop = a;
+}
+
+void DomBrush::clear(bool clear_all)
+{
+    delete m_color;
+    delete m_texture;
+    delete m_gradient;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_brushStyle = false;
+    }
+
+    m_kind = Unknown;
+
+    m_color = 0;
+    m_texture = 0;
+    m_gradient = 0;
+}
+
+DomBrush::DomBrush()
+{
+    m_kind = Unknown;
+
+    m_has_attr_brushStyle = false;
+    m_color = 0;
+    m_texture = 0;
+    m_gradient = 0;
+}
+
+DomBrush::~DomBrush()
+{
+    delete m_color;
+    delete m_texture;
+    delete m_gradient;
+}
+
+void DomBrush::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("brushstyle")) {
+            setAttributeBrushStyle(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QStringLiteral("texture")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                setElementTexture(v);
+                continue;
+            }
+            if (tag == QStringLiteral("gradient")) {
+                DomGradient *v = new DomGradient();
+                v->read(reader);
+                setElementGradient(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomBrush::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("brush") : tagName.toLower());
+
+    if (hasAttributeBrushStyle())
+        writer.writeAttribute(QStringLiteral("brushstyle"), attributeBrushStyle());
+
+    switch (kind()) {
+        case Color: {
+            DomColor* v = elementColor();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("color"));
+            }
+            break;
+        }
+        case Texture: {
+            DomProperty* v = elementTexture();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("texture"));
+            }
+            break;
+        }
+        case Gradient: {
+            DomGradient* v = elementGradient();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("gradient"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColor* DomBrush::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    return a;
+}
+
+void DomBrush::setElementColor(DomColor* a)
+{
+    clear(false);
+    m_kind = Color;
+    m_color = a;
+}
+
+DomProperty* DomBrush::takeElementTexture() 
+{
+    DomProperty* a = m_texture;
+    m_texture = 0;
+    return a;
+}
+
+void DomBrush::setElementTexture(DomProperty* a)
+{
+    clear(false);
+    m_kind = Texture;
+    m_texture = a;
+}
+
+DomGradient* DomBrush::takeElementGradient() 
+{
+    DomGradient* a = m_gradient;
+    m_gradient = 0;
+    return a;
+}
+
+void DomBrush::setElementGradient(DomGradient* a)
+{
+    clear(false);
+    m_kind = Gradient;
+    m_gradient = a;
+}
+
+void DomColorRole::clear(bool clear_all)
+{
+    delete m_brush;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_role = false;
+    }
+
+    m_children = 0;
+    m_brush = 0;
+}
+
+DomColorRole::DomColorRole()
+{
+    m_children = 0;
+    m_has_attr_role = false;
+    m_brush = 0;
+}
+
+DomColorRole::~DomColorRole()
+{
+    delete m_brush;
+}
+
+void DomColorRole::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("role")) {
+            setAttributeRole(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(reader);
+                setElementBrush(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomColorRole::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorrole") : tagName.toLower());
+
+    if (hasAttributeRole())
+        writer.writeAttribute(QStringLiteral("role"), attributeRole());
+
+    if (m_children & Brush) {
+        m_brush->write(writer, QStringLiteral("brush"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomBrush* DomColorRole::takeElementBrush() 
+{
+    DomBrush* a = m_brush;
+    m_brush = 0;
+    m_children ^= Brush;
+    return a;
+}
+
+void DomColorRole::setElementBrush(DomBrush* a)
+{
+    delete m_brush;
+    m_children |= Brush;
+    m_brush = a;
+}
+
+void DomColorRole::clearElementBrush()
+{
+    delete m_brush;
+    m_brush = 0;
+    m_children &= ~Brush;
+}
+
+void DomColorGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_colorRole);
+    m_colorRole.clear();
+    qDeleteAll(m_color);
+    m_color.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomColorGroup::DomColorGroup()
+{
+    m_children = 0;
+}
+
+DomColorGroup::~DomColorGroup()
+{
+    qDeleteAll(m_colorRole);
+    m_colorRole.clear();
+    qDeleteAll(m_color);
+    m_color.clear();
+}
+
+void DomColorGroup::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("colorrole")) {
+                DomColorRole *v = new DomColorRole();
+                v->read(reader);
+                m_colorRole.append(v);
+                continue;
+            }
+            if (tag == QStringLiteral("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                m_color.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomColorGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorgroup") : tagName.toLower());
+
+    for (int i = 0; i < m_colorRole.size(); ++i) {
+        DomColorRole* v = m_colorRole[i];
+        v->write(writer, QStringLiteral("colorrole"));
+    }
+    for (int i = 0; i < m_color.size(); ++i) {
+        DomColor* v = m_color[i];
+        v->write(writer, QStringLiteral("color"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColorGroup::setElementColorRole(const QList<DomColorRole*>& a)
+{
+    m_children |= ColorRole;
+    m_colorRole = a;
+}
+
+void DomColorGroup::setElementColor(const QList<DomColor*>& a)
+{
+    m_children |= Color;
+    m_color = a;
+}
+
+void DomPalette::clear(bool clear_all)
+{
+    delete m_active;
+    delete m_inactive;
+    delete m_disabled;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_active = 0;
+    m_inactive = 0;
+    m_disabled = 0;
+}
+
+DomPalette::DomPalette()
+{
+    m_children = 0;
+    m_active = 0;
+    m_inactive = 0;
+    m_disabled = 0;
+}
+
+DomPalette::~DomPalette()
+{
+    delete m_active;
+    delete m_inactive;
+    delete m_disabled;
+}
+
+void DomPalette::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("active")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementActive(v);
+                continue;
+            }
+            if (tag == QStringLiteral("inactive")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementInactive(v);
+                continue;
+            }
+            if (tag == QStringLiteral("disabled")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementDisabled(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomPalette::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("palette") : tagName.toLower());
+
+    if (m_children & Active) {
+        m_active->write(writer, QStringLiteral("active"));
+    }
+
+    if (m_children & Inactive) {
+        m_inactive->write(writer, QStringLiteral("inactive"));
+    }
+
+    if (m_children & Disabled) {
+        m_disabled->write(writer, QStringLiteral("disabled"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColorGroup* DomPalette::takeElementActive() 
+{
+    DomColorGroup* a = m_active;
+    m_active = 0;
+    m_children ^= Active;
+    return a;
+}
+
+void DomPalette::setElementActive(DomColorGroup* a)
+{
+    delete m_active;
+    m_children |= Active;
+    m_active = a;
+}
+
+DomColorGroup* DomPalette::takeElementInactive() 
+{
+    DomColorGroup* a = m_inactive;
+    m_inactive = 0;
+    m_children ^= Inactive;
+    return a;
+}
+
+void DomPalette::setElementInactive(DomColorGroup* a)
+{
+    delete m_inactive;
+    m_children |= Inactive;
+    m_inactive = a;
+}
+
+DomColorGroup* DomPalette::takeElementDisabled() 
+{
+    DomColorGroup* a = m_disabled;
+    m_disabled = 0;
+    m_children ^= Disabled;
+    return a;
+}
+
+void DomPalette::setElementDisabled(DomColorGroup* a)
+{
+    delete m_disabled;
+    m_children |= Disabled;
+    m_disabled = a;
+}
+
+void DomPalette::clearElementActive()
+{
+    delete m_active;
+    m_active = 0;
+    m_children &= ~Active;
+}
+
+void DomPalette::clearElementInactive()
+{
+    delete m_inactive;
+    m_inactive = 0;
+    m_children &= ~Inactive;
+}
+
+void DomPalette::clearElementDisabled()
+{
+    delete m_disabled;
+    m_disabled = 0;
+    m_children &= ~Disabled;
+}
+
+void DomFont::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_pointSize = 0;
+    m_weight = 0;
+    m_italic = false;
+    m_bold = false;
+    m_underline = false;
+    m_strikeOut = false;
+    m_antialiasing = false;
+    m_kerning = false;
+}
+
+DomFont::DomFont()
+{
+    m_children = 0;
+    m_pointSize = 0;
+    m_weight = 0;
+    m_italic = false;
+    m_bold = false;
+    m_underline = false;
+    m_strikeOut = false;
+    m_antialiasing = false;
+    m_kerning = false;
+}
+
+DomFont::~DomFont()
+{
+}
+
+void DomFont::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("family")) {
+                setElementFamily(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("pointsize")) {
+                setElementPointSize(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("weight")) {
+                setElementWeight(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("italic")) {
+                setElementItalic((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QStringLiteral("bold")) {
+                setElementBold((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QStringLiteral("underline")) {
+                setElementUnderline((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QStringLiteral("strikeout")) {
+                setElementStrikeOut((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QStringLiteral("antialiasing")) {
+                setElementAntialiasing((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QStringLiteral("stylestrategy")) {
+                setElementStyleStrategy(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("kerning")) {
+                setElementKerning((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomFont::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("font") : tagName.toLower());
+
+    if (m_children & Family) {
+        writer.writeTextElement(QStringLiteral("family"), m_family);
+    }
+
+    if (m_children & PointSize) {
+        writer.writeTextElement(QStringLiteral("pointsize"), QString::number(m_pointSize));
+    }
+
+    if (m_children & Weight) {
+        writer.writeTextElement(QStringLiteral("weight"), QString::number(m_weight));
+    }
+
+    if (m_children & Italic) {
+        writer.writeTextElement(QStringLiteral("italic"), (m_italic ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Bold) {
+        writer.writeTextElement(QStringLiteral("bold"), (m_bold ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Underline) {
+        writer.writeTextElement(QStringLiteral("underline"), (m_underline ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & StrikeOut) {
+        writer.writeTextElement(QStringLiteral("strikeout"), (m_strikeOut ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Antialiasing) {
+        writer.writeTextElement(QStringLiteral("antialiasing"), (m_antialiasing ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & StyleStrategy) {
+        writer.writeTextElement(QStringLiteral("stylestrategy"), m_styleStrategy);
+    }
+
+    if (m_children & Kerning) {
+        writer.writeTextElement(QStringLiteral("kerning"), (m_kerning ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomFont::setElementFamily(const QString& a)
+{
+    m_children |= Family;
+    m_family = a;
+}
+
+void DomFont::setElementPointSize(int a)
+{
+    m_children |= PointSize;
+    m_pointSize = a;
+}
+
+void DomFont::setElementWeight(int a)
+{
+    m_children |= Weight;
+    m_weight = a;
+}
+
+void DomFont::setElementItalic(bool a)
+{
+    m_children |= Italic;
+    m_italic = a;
+}
+
+void DomFont::setElementBold(bool a)
+{
+    m_children |= Bold;
+    m_bold = a;
+}
+
+void DomFont::setElementUnderline(bool a)
+{
+    m_children |= Underline;
+    m_underline = a;
+}
+
+void DomFont::setElementStrikeOut(bool a)
+{
+    m_children |= StrikeOut;
+    m_strikeOut = a;
+}
+
+void DomFont::setElementAntialiasing(bool a)
+{
+    m_children |= Antialiasing;
+    m_antialiasing = a;
+}
+
+void DomFont::setElementStyleStrategy(const QString& a)
+{
+    m_children |= StyleStrategy;
+    m_styleStrategy = a;
+}
+
+void DomFont::setElementKerning(bool a)
+{
+    m_children |= Kerning;
+    m_kerning = a;
+}
+
+void DomFont::clearElementFamily()
+{
+    m_children &= ~Family;
+}
+
+void DomFont::clearElementPointSize()
+{
+    m_children &= ~PointSize;
+}
+
+void DomFont::clearElementWeight()
+{
+    m_children &= ~Weight;
+}
+
+void DomFont::clearElementItalic()
+{
+    m_children &= ~Italic;
+}
+
+void DomFont::clearElementBold()
+{
+    m_children &= ~Bold;
+}
+
+void DomFont::clearElementUnderline()
+{
+    m_children &= ~Underline;
+}
+
+void DomFont::clearElementStrikeOut()
+{
+    m_children &= ~StrikeOut;
+}
+
+void DomFont::clearElementAntialiasing()
+{
+    m_children &= ~Antialiasing;
+}
+
+void DomFont::clearElementStyleStrategy()
+{
+    m_children &= ~StyleStrategy;
+}
+
+void DomFont::clearElementKerning()
+{
+    m_children &= ~Kerning;
+}
+
+void DomPoint::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPoint::DomPoint()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPoint::~DomPoint()
+{
+}
+
+void DomPoint::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomPoint::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("point") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPoint::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomPoint::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomPoint::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomPoint::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRect::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRect::DomRect()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRect::~DomRect()
+{
+}
+
+void DomRect::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("width")) {
+                setElementWidth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("height")) {
+                setElementHeight(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomRect::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rect") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (m_children & Width) {
+        writer.writeTextElement(QStringLiteral("width"), QString::number(m_width));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QStringLiteral("height"), QString::number(m_height));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRect::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomRect::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomRect::setElementWidth(int a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomRect::setElementHeight(int a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomRect::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomRect::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRect::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomRect::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomLocale::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_language = false;
+    m_has_attr_country = false;
+    }
+
+    m_children = 0;
+}
+
+DomLocale::DomLocale()
+{
+    m_children = 0;
+    m_has_attr_language = false;
+    m_has_attr_country = false;
+}
+
+DomLocale::~DomLocale()
+{
+}
+
+void DomLocale::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("country")) {
+            setAttributeCountry(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomLocale::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("locale") : tagName.toLower());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QStringLiteral("language"), attributeLanguage());
+
+    if (hasAttributeCountry())
+        writer.writeAttribute(QStringLiteral("country"), attributeCountry());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicy::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_hSizeType = false;
+    m_has_attr_vSizeType = false;
+    }
+
+    m_children = 0;
+    m_hSizeType = 0;
+    m_vSizeType = 0;
+    m_horStretch = 0;
+    m_verStretch = 0;
+}
+
+DomSizePolicy::DomSizePolicy()
+{
+    m_children = 0;
+    m_has_attr_hSizeType = false;
+    m_has_attr_vSizeType = false;
+    m_hSizeType = 0;
+    m_vSizeType = 0;
+    m_horStretch = 0;
+    m_verStretch = 0;
+}
+
+DomSizePolicy::~DomSizePolicy()
+{
+}
+
+void DomSizePolicy::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("hsizetype")) {
+            setAttributeHSizeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("vsizetype")) {
+            setAttributeVSizeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("hsizetype")) {
+                setElementHSizeType(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("vsizetype")) {
+                setElementVSizeType(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("horstretch")) {
+                setElementHorStretch(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("verstretch")) {
+                setElementVerStretch(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSizePolicy::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicy") : tagName.toLower());
+
+    if (hasAttributeHSizeType())
+        writer.writeAttribute(QStringLiteral("hsizetype"), attributeHSizeType());
+
+    if (hasAttributeVSizeType())
+        writer.writeAttribute(QStringLiteral("vsizetype"), attributeVSizeType());
+
+    if (m_children & HSizeType) {
+        writer.writeTextElement(QStringLiteral("hsizetype"), QString::number(m_hSizeType));
+    }
+
+    if (m_children & VSizeType) {
+        writer.writeTextElement(QStringLiteral("vsizetype"), QString::number(m_vSizeType));
+    }
+
+    if (m_children & HorStretch) {
+        writer.writeTextElement(QStringLiteral("horstretch"), QString::number(m_horStretch));
+    }
+
+    if (m_children & VerStretch) {
+        writer.writeTextElement(QStringLiteral("verstretch"), QString::number(m_verStretch));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicy::setElementHSizeType(int a)
+{
+    m_children |= HSizeType;
+    m_hSizeType = a;
+}
+
+void DomSizePolicy::setElementVSizeType(int a)
+{
+    m_children |= VSizeType;
+    m_vSizeType = a;
+}
+
+void DomSizePolicy::setElementHorStretch(int a)
+{
+    m_children |= HorStretch;
+    m_horStretch = a;
+}
+
+void DomSizePolicy::setElementVerStretch(int a)
+{
+    m_children |= VerStretch;
+    m_verStretch = a;
+}
+
+void DomSizePolicy::clearElementHSizeType()
+{
+    m_children &= ~HSizeType;
+}
+
+void DomSizePolicy::clearElementVSizeType()
+{
+    m_children &= ~VSizeType;
+}
+
+void DomSizePolicy::clearElementHorStretch()
+{
+    m_children &= ~HorStretch;
+}
+
+void DomSizePolicy::clearElementVerStretch()
+{
+    m_children &= ~VerStretch;
+}
+
+void DomSize::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSize::DomSize()
+{
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSize::~DomSize()
+{
+}
+
+void DomSize::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("width")) {
+                setElementWidth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("height")) {
+                setElementHeight(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSize::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("size") : tagName.toLower());
+
+    if (m_children & Width) {
+        writer.writeTextElement(QStringLiteral("width"), QString::number(m_width));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QStringLiteral("height"), QString::number(m_height));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSize::setElementWidth(int a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomSize::setElementHeight(int a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomSize::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomSize::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomDate::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDate::DomDate()
+{
+    m_children = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDate::~DomDate()
+{
+}
+
+void DomDate::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("year")) {
+                setElementYear(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("month")) {
+                setElementMonth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("day")) {
+                setElementDay(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomDate::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("date") : tagName.toLower());
+
+    if (m_children & Year) {
+        writer.writeTextElement(QStringLiteral("year"), QString::number(m_year));
+    }
+
+    if (m_children & Month) {
+        writer.writeTextElement(QStringLiteral("month"), QString::number(m_month));
+    }
+
+    if (m_children & Day) {
+        writer.writeTextElement(QStringLiteral("day"), QString::number(m_day));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDate::setElementYear(int a)
+{
+    m_children |= Year;
+    m_year = a;
+}
+
+void DomDate::setElementMonth(int a)
+{
+    m_children |= Month;
+    m_month = a;
+}
+
+void DomDate::setElementDay(int a)
+{
+    m_children |= Day;
+    m_day = a;
+}
+
+void DomDate::clearElementYear()
+{
+    m_children &= ~Year;
+}
+
+void DomDate::clearElementMonth()
+{
+    m_children &= ~Month;
+}
+
+void DomDate::clearElementDay()
+{
+    m_children &= ~Day;
+}
+
+void DomTime::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+}
+
+DomTime::DomTime()
+{
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+}
+
+DomTime::~DomTime()
+{
+}
+
+void DomTime::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("hour")) {
+                setElementHour(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("minute")) {
+                setElementMinute(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("second")) {
+                setElementSecond(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomTime::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("time") : tagName.toLower());
+
+    if (m_children & Hour) {
+        writer.writeTextElement(QStringLiteral("hour"), QString::number(m_hour));
+    }
+
+    if (m_children & Minute) {
+        writer.writeTextElement(QStringLiteral("minute"), QString::number(m_minute));
+    }
+
+    if (m_children & Second) {
+        writer.writeTextElement(QStringLiteral("second"), QString::number(m_second));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTime::setElementHour(int a)
+{
+    m_children |= Hour;
+    m_hour = a;
+}
+
+void DomTime::setElementMinute(int a)
+{
+    m_children |= Minute;
+    m_minute = a;
+}
+
+void DomTime::setElementSecond(int a)
+{
+    m_children |= Second;
+    m_second = a;
+}
+
+void DomTime::clearElementHour()
+{
+    m_children &= ~Hour;
+}
+
+void DomTime::clearElementMinute()
+{
+    m_children &= ~Minute;
+}
+
+void DomTime::clearElementSecond()
+{
+    m_children &= ~Second;
+}
+
+void DomDateTime::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDateTime::DomDateTime()
+{
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDateTime::~DomDateTime()
+{
+}
+
+void DomDateTime::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("hour")) {
+                setElementHour(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("minute")) {
+                setElementMinute(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("second")) {
+                setElementSecond(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("year")) {
+                setElementYear(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("month")) {
+                setElementMonth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("day")) {
+                setElementDay(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomDateTime::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("datetime") : tagName.toLower());
+
+    if (m_children & Hour) {
+        writer.writeTextElement(QStringLiteral("hour"), QString::number(m_hour));
+    }
+
+    if (m_children & Minute) {
+        writer.writeTextElement(QStringLiteral("minute"), QString::number(m_minute));
+    }
+
+    if (m_children & Second) {
+        writer.writeTextElement(QStringLiteral("second"), QString::number(m_second));
+    }
+
+    if (m_children & Year) {
+        writer.writeTextElement(QStringLiteral("year"), QString::number(m_year));
+    }
+
+    if (m_children & Month) {
+        writer.writeTextElement(QStringLiteral("month"), QString::number(m_month));
+    }
+
+    if (m_children & Day) {
+        writer.writeTextElement(QStringLiteral("day"), QString::number(m_day));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDateTime::setElementHour(int a)
+{
+    m_children |= Hour;
+    m_hour = a;
+}
+
+void DomDateTime::setElementMinute(int a)
+{
+    m_children |= Minute;
+    m_minute = a;
+}
+
+void DomDateTime::setElementSecond(int a)
+{
+    m_children |= Second;
+    m_second = a;
+}
+
+void DomDateTime::setElementYear(int a)
+{
+    m_children |= Year;
+    m_year = a;
+}
+
+void DomDateTime::setElementMonth(int a)
+{
+    m_children |= Month;
+    m_month = a;
+}
+
+void DomDateTime::setElementDay(int a)
+{
+    m_children |= Day;
+    m_day = a;
+}
+
+void DomDateTime::clearElementHour()
+{
+    m_children &= ~Hour;
+}
+
+void DomDateTime::clearElementMinute()
+{
+    m_children &= ~Minute;
+}
+
+void DomDateTime::clearElementSecond()
+{
+    m_children &= ~Second;
+}
+
+void DomDateTime::clearElementYear()
+{
+    m_children &= ~Year;
+}
+
+void DomDateTime::clearElementMonth()
+{
+    m_children &= ~Month;
+}
+
+void DomDateTime::clearElementDay()
+{
+    m_children &= ~Day;
+}
+
+void DomStringList::clear(bool clear_all)
+{
+    m_string.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomStringList::DomStringList()
+{
+    m_children = 0;
+}
+
+DomStringList::~DomStringList()
+{
+    m_string.clear();
+}
+
+void DomStringList::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("string")) {
+                m_string.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomStringList::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringlist") : tagName.toLower());
+
+    for (int i = 0; i < m_string.size(); ++i) {
+        QString v = m_string[i];
+        writer.writeTextElement(QStringLiteral("string"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomStringList::setElementString(const QStringList& a)
+{
+    m_children |= String;
+    m_string = a;
+}
+
+void DomResourcePixmap::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_resource = false;
+    m_has_attr_alias = false;
+    }
+
+    m_children = 0;
+}
+
+DomResourcePixmap::DomResourcePixmap()
+{
+    m_children = 0;
+    m_has_attr_resource = false;
+    m_has_attr_alias = false;
+    m_text.clear();
+}
+
+DomResourcePixmap::~DomResourcePixmap()
+{
+}
+
+void DomResourcePixmap::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("resource")) {
+            setAttributeResource(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("alias")) {
+            setAttributeAlias(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomResourcePixmap::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourcepixmap") : tagName.toLower());
+
+    if (hasAttributeResource())
+        writer.writeAttribute(QStringLiteral("resource"), attributeResource());
+
+    if (hasAttributeAlias())
+        writer.writeAttribute(QStringLiteral("alias"), attributeAlias());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResourceIcon::clear(bool clear_all)
+{
+    delete m_normalOff;
+    delete m_normalOn;
+    delete m_disabledOff;
+    delete m_disabledOn;
+    delete m_activeOff;
+    delete m_activeOn;
+    delete m_selectedOff;
+    delete m_selectedOn;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_theme = false;
+    m_has_attr_resource = false;
+    }
+
+    m_children = 0;
+    m_normalOff = 0;
+    m_normalOn = 0;
+    m_disabledOff = 0;
+    m_disabledOn = 0;
+    m_activeOff = 0;
+    m_activeOn = 0;
+    m_selectedOff = 0;
+    m_selectedOn = 0;
+}
+
+DomResourceIcon::DomResourceIcon()
+{
+    m_children = 0;
+    m_has_attr_theme = false;
+    m_has_attr_resource = false;
+    m_text.clear();
+    m_normalOff = 0;
+    m_normalOn = 0;
+    m_disabledOff = 0;
+    m_disabledOn = 0;
+    m_activeOff = 0;
+    m_activeOn = 0;
+    m_selectedOff = 0;
+    m_selectedOn = 0;
+}
+
+DomResourceIcon::~DomResourceIcon()
+{
+    delete m_normalOff;
+    delete m_normalOn;
+    delete m_disabledOff;
+    delete m_disabledOn;
+    delete m_activeOff;
+    delete m_activeOn;
+    delete m_selectedOff;
+    delete m_selectedOn;
+}
+
+void DomResourceIcon::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("theme")) {
+            setAttributeTheme(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("resource")) {
+            setAttributeResource(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("normaloff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementNormalOff(v);
+                continue;
+            }
+            if (tag == QStringLiteral("normalon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementNormalOn(v);
+                continue;
+            }
+            if (tag == QStringLiteral("disabledoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementDisabledOff(v);
+                continue;
+            }
+            if (tag == QStringLiteral("disabledon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementDisabledOn(v);
+                continue;
+            }
+            if (tag == QStringLiteral("activeoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementActiveOff(v);
+                continue;
+            }
+            if (tag == QStringLiteral("activeon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementActiveOn(v);
+                continue;
+            }
+            if (tag == QStringLiteral("selectedoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementSelectedOff(v);
+                continue;
+            }
+            if (tag == QStringLiteral("selectedon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementSelectedOn(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomResourceIcon::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourceicon") : tagName.toLower());
+
+    if (hasAttributeTheme())
+        writer.writeAttribute(QStringLiteral("theme"), attributeTheme());
+
+    if (hasAttributeResource())
+        writer.writeAttribute(QStringLiteral("resource"), attributeResource());
+
+    if (m_children & NormalOff) {
+        m_normalOff->write(writer, QStringLiteral("normaloff"));
+    }
+
+    if (m_children & NormalOn) {
+        m_normalOn->write(writer, QStringLiteral("normalon"));
+    }
+
+    if (m_children & DisabledOff) {
+        m_disabledOff->write(writer, QStringLiteral("disabledoff"));
+    }
+
+    if (m_children & DisabledOn) {
+        m_disabledOn->write(writer, QStringLiteral("disabledon"));
+    }
+
+    if (m_children & ActiveOff) {
+        m_activeOff->write(writer, QStringLiteral("activeoff"));
+    }
+
+    if (m_children & ActiveOn) {
+        m_activeOn->write(writer, QStringLiteral("activeon"));
+    }
+
+    if (m_children & SelectedOff) {
+        m_selectedOff->write(writer, QStringLiteral("selectedoff"));
+    }
+
+    if (m_children & SelectedOn) {
+        m_selectedOn->write(writer, QStringLiteral("selectedon"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementNormalOff() 
+{
+    DomResourcePixmap* a = m_normalOff;
+    m_normalOff = 0;
+    m_children ^= NormalOff;
+    return a;
+}
+
+void DomResourceIcon::setElementNormalOff(DomResourcePixmap* a)
+{
+    delete m_normalOff;
+    m_children |= NormalOff;
+    m_normalOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementNormalOn() 
+{
+    DomResourcePixmap* a = m_normalOn;
+    m_normalOn = 0;
+    m_children ^= NormalOn;
+    return a;
+}
+
+void DomResourceIcon::setElementNormalOn(DomResourcePixmap* a)
+{
+    delete m_normalOn;
+    m_children |= NormalOn;
+    m_normalOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementDisabledOff() 
+{
+    DomResourcePixmap* a = m_disabledOff;
+    m_disabledOff = 0;
+    m_children ^= DisabledOff;
+    return a;
+}
+
+void DomResourceIcon::setElementDisabledOff(DomResourcePixmap* a)
+{
+    delete m_disabledOff;
+    m_children |= DisabledOff;
+    m_disabledOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementDisabledOn() 
+{
+    DomResourcePixmap* a = m_disabledOn;
+    m_disabledOn = 0;
+    m_children ^= DisabledOn;
+    return a;
+}
+
+void DomResourceIcon::setElementDisabledOn(DomResourcePixmap* a)
+{
+    delete m_disabledOn;
+    m_children |= DisabledOn;
+    m_disabledOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementActiveOff() 
+{
+    DomResourcePixmap* a = m_activeOff;
+    m_activeOff = 0;
+    m_children ^= ActiveOff;
+    return a;
+}
+
+void DomResourceIcon::setElementActiveOff(DomResourcePixmap* a)
+{
+    delete m_activeOff;
+    m_children |= ActiveOff;
+    m_activeOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementActiveOn() 
+{
+    DomResourcePixmap* a = m_activeOn;
+    m_activeOn = 0;
+    m_children ^= ActiveOn;
+    return a;
+}
+
+void DomResourceIcon::setElementActiveOn(DomResourcePixmap* a)
+{
+    delete m_activeOn;
+    m_children |= ActiveOn;
+    m_activeOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementSelectedOff() 
+{
+    DomResourcePixmap* a = m_selectedOff;
+    m_selectedOff = 0;
+    m_children ^= SelectedOff;
+    return a;
+}
+
+void DomResourceIcon::setElementSelectedOff(DomResourcePixmap* a)
+{
+    delete m_selectedOff;
+    m_children |= SelectedOff;
+    m_selectedOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementSelectedOn() 
+{
+    DomResourcePixmap* a = m_selectedOn;
+    m_selectedOn = 0;
+    m_children ^= SelectedOn;
+    return a;
+}
+
+void DomResourceIcon::setElementSelectedOn(DomResourcePixmap* a)
+{
+    delete m_selectedOn;
+    m_children |= SelectedOn;
+    m_selectedOn = a;
+}
+
+void DomResourceIcon::clearElementNormalOff()
+{
+    delete m_normalOff;
+    m_normalOff = 0;
+    m_children &= ~NormalOff;
+}
+
+void DomResourceIcon::clearElementNormalOn()
+{
+    delete m_normalOn;
+    m_normalOn = 0;
+    m_children &= ~NormalOn;
+}
+
+void DomResourceIcon::clearElementDisabledOff()
+{
+    delete m_disabledOff;
+    m_disabledOff = 0;
+    m_children &= ~DisabledOff;
+}
+
+void DomResourceIcon::clearElementDisabledOn()
+{
+    delete m_disabledOn;
+    m_disabledOn = 0;
+    m_children &= ~DisabledOn;
+}
+
+void DomResourceIcon::clearElementActiveOff()
+{
+    delete m_activeOff;
+    m_activeOff = 0;
+    m_children &= ~ActiveOff;
+}
+
+void DomResourceIcon::clearElementActiveOn()
+{
+    delete m_activeOn;
+    m_activeOn = 0;
+    m_children &= ~ActiveOn;
+}
+
+void DomResourceIcon::clearElementSelectedOff()
+{
+    delete m_selectedOff;
+    m_selectedOff = 0;
+    m_children &= ~SelectedOff;
+}
+
+void DomResourceIcon::clearElementSelectedOn()
+{
+    delete m_selectedOn;
+    m_selectedOn = 0;
+    m_children &= ~SelectedOn;
+}
+
+void DomString::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_notr = false;
+    m_has_attr_comment = false;
+    m_has_attr_extraComment = false;
+    }
+
+    m_children = 0;
+}
+
+DomString::DomString()
+{
+    m_children = 0;
+    m_has_attr_notr = false;
+    m_has_attr_comment = false;
+    m_has_attr_extraComment = false;
+    m_text.clear();
+}
+
+DomString::~DomString()
+{
+}
+
+void DomString::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("notr")) {
+            setAttributeNotr(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("comment")) {
+            setAttributeComment(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("extracomment")) {
+            setAttributeExtraComment(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomString::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("string") : tagName.toLower());
+
+    if (hasAttributeNotr())
+        writer.writeAttribute(QStringLiteral("notr"), attributeNotr());
+
+    if (hasAttributeComment())
+        writer.writeAttribute(QStringLiteral("comment"), attributeComment());
+
+    if (hasAttributeExtraComment())
+        writer.writeAttribute(QStringLiteral("extracomment"), attributeExtraComment());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPointF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPointF::DomPointF()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPointF::~DomPointF()
+{
+}
+
+void DomPointF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomPointF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("pointf") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPointF::setElementX(double a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomPointF::setElementY(double a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomPointF::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomPointF::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRectF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRectF::DomRectF()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRectF::~DomRectF()
+{
+}
+
+void DomRectF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QStringLiteral("width")) {
+                setElementWidth(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QStringLiteral("height")) {
+                setElementHeight(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomRectF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rectf") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15));
+    }
+
+    if (m_children & Width) {
+        writer.writeTextElement(QStringLiteral("width"), QString::number(m_width, 'f', 15));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QStringLiteral("height"), QString::number(m_height, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRectF::setElementX(double a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomRectF::setElementY(double a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomRectF::setElementWidth(double a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomRectF::setElementHeight(double a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomRectF::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomRectF::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRectF::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomRectF::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomSizeF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSizeF::DomSizeF()
+{
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSizeF::~DomSizeF()
+{
+}
+
+void DomSizeF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("width")) {
+                setElementWidth(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QStringLiteral("height")) {
+                setElementHeight(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSizeF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizef") : tagName.toLower());
+
+    if (m_children & Width) {
+        writer.writeTextElement(QStringLiteral("width"), QString::number(m_width, 'f', 15));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QStringLiteral("height"), QString::number(m_height, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizeF::setElementWidth(double a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomSizeF::setElementHeight(double a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomSizeF::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomSizeF::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomChar::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_unicode = 0;
+}
+
+DomChar::DomChar()
+{
+    m_children = 0;
+    m_unicode = 0;
+}
+
+DomChar::~DomChar()
+{
+}
+
+void DomChar::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("unicode")) {
+                setElementUnicode(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomChar::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("char") : tagName.toLower());
+
+    if (m_children & Unicode) {
+        writer.writeTextElement(QStringLiteral("unicode"), QString::number(m_unicode));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomChar::setElementUnicode(int a)
+{
+    m_children |= Unicode;
+    m_unicode = a;
+}
+
+void DomChar::clearElementUnicode()
+{
+    m_children &= ~Unicode;
+}
+
+void DomUrl::clear(bool clear_all)
+{
+    delete m_string;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_string = 0;
+}
+
+DomUrl::DomUrl()
+{
+    m_children = 0;
+    m_string = 0;
+}
+
+DomUrl::~DomUrl()
+{
+    delete m_string;
+}
+
+void DomUrl::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("string")) {
+                DomString *v = new DomString();
+                v->read(reader);
+                setElementString(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomUrl::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("url") : tagName.toLower());
+
+    if (m_children & String) {
+        m_string->write(writer, QStringLiteral("string"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomString* DomUrl::takeElementString() 
+{
+    DomString* a = m_string;
+    m_string = 0;
+    m_children ^= String;
+    return a;
+}
+
+void DomUrl::setElementString(DomString* a)
+{
+    delete m_string;
+    m_children |= String;
+    m_string = a;
+}
+
+void DomUrl::clearElementString()
+{
+    delete m_string;
+    m_string = 0;
+    m_children &= ~String;
+}
+
+void DomProperty::clear(bool clear_all)
+{
+    delete m_color;
+    delete m_font;
+    delete m_iconSet;
+    delete m_pixmap;
+    delete m_palette;
+    delete m_point;
+    delete m_rect;
+    delete m_locale;
+    delete m_sizePolicy;
+    delete m_size;
+    delete m_string;
+    delete m_stringList;
+    delete m_date;
+    delete m_time;
+    delete m_dateTime;
+    delete m_pointF;
+    delete m_rectF;
+    delete m_sizeF;
+    delete m_char;
+    delete m_url;
+    delete m_brush;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_stdset = false;
+    m_attr_stdset = 0;
+    }
+
+    m_kind = Unknown;
+
+    m_color = 0;
+    m_cursor = 0;
+    m_font = 0;
+    m_iconSet = 0;
+    m_pixmap = 0;
+    m_palette = 0;
+    m_point = 0;
+    m_rect = 0;
+    m_locale = 0;
+    m_sizePolicy = 0;
+    m_size = 0;
+    m_string = 0;
+    m_stringList = 0;
+    m_number = 0;
+    m_float = 0.0;
+    m_double = 0;
+    m_date = 0;
+    m_time = 0;
+    m_dateTime = 0;
+    m_pointF = 0;
+    m_rectF = 0;
+    m_sizeF = 0;
+    m_longLong = 0;
+    m_char = 0;
+    m_url = 0;
+    m_UInt = 0;
+    m_uLongLong = 0;
+    m_brush = 0;
+}
+
+DomProperty::DomProperty()
+{
+    m_kind = Unknown;
+
+    m_has_attr_name = false;
+    m_has_attr_stdset = false;
+    m_attr_stdset = 0;
+    m_color = 0;
+    m_cursor = 0;
+    m_font = 0;
+    m_iconSet = 0;
+    m_pixmap = 0;
+    m_palette = 0;
+    m_point = 0;
+    m_rect = 0;
+    m_locale = 0;
+    m_sizePolicy = 0;
+    m_size = 0;
+    m_string = 0;
+    m_stringList = 0;
+    m_number = 0;
+    m_float = 0.0;
+    m_double = 0;
+    m_date = 0;
+    m_time = 0;
+    m_dateTime = 0;
+    m_pointF = 0;
+    m_rectF = 0;
+    m_sizeF = 0;
+    m_longLong = 0;
+    m_char = 0;
+    m_url = 0;
+    m_UInt = 0;
+    m_uLongLong = 0;
+    m_brush = 0;
+}
+
+DomProperty::~DomProperty()
+{
+    delete m_color;
+    delete m_font;
+    delete m_iconSet;
+    delete m_pixmap;
+    delete m_palette;
+    delete m_point;
+    delete m_rect;
+    delete m_locale;
+    delete m_sizePolicy;
+    delete m_size;
+    delete m_string;
+    delete m_stringList;
+    delete m_date;
+    delete m_time;
+    delete m_dateTime;
+    delete m_pointF;
+    delete m_rectF;
+    delete m_sizeF;
+    delete m_char;
+    delete m_url;
+    delete m_brush;
+}
+
+void DomProperty::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("stdset")) {
+            setAttributeStdset(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("bool")) {
+                setElementBool(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QStringLiteral("cstring")) {
+                setElementCstring(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("cursor")) {
+                setElementCursor(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("cursorshape")) {
+                setElementCursorShape(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("enum")) {
+                setElementEnum(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("font")) {
+                DomFont *v = new DomFont();
+                v->read(reader);
+                setElementFont(v);
+                continue;
+            }
+            if (tag == QStringLiteral("iconset")) {
+                DomResourceIcon *v = new DomResourceIcon();
+                v->read(reader);
+                setElementIconSet(v);
+                continue;
+            }
+            if (tag == QStringLiteral("pixmap")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementPixmap(v);
+                continue;
+            }
+            if (tag == QStringLiteral("palette")) {
+                DomPalette *v = new DomPalette();
+                v->read(reader);
+                setElementPalette(v);
+                continue;
+            }
+            if (tag == QStringLiteral("point")) {
+                DomPoint *v = new DomPoint();
+                v->read(reader);
+                setElementPoint(v);
+                continue;
+            }
+            if (tag == QStringLiteral("rect")) {
+                DomRect *v = new DomRect();
+                v->read(reader);
+                setElementRect(v);
+                continue;
+            }
+            if (tag == QStringLiteral("set")) {
+                setElementSet(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("locale")) {
+                DomLocale *v = new DomLocale();
+                v->read(reader);
+                setElementLocale(v);
+                continue;
+            }
+            if (tag == QStringLiteral("sizepolicy")) {
+                DomSizePolicy *v = new DomSizePolicy();
+                v->read(reader);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QStringLiteral("size")) {
+                DomSize *v = new DomSize();
+                v->read(reader);
+                setElementSize(v);
+                continue;
+            }
+            if (tag == QStringLiteral("string")) {
+                DomString *v = new DomString();
+                v->read(reader);
+                setElementString(v);
+                continue;
+            }
+            if (tag == QStringLiteral("stringlist")) {
+                DomStringList *v = new DomStringList();
+                v->read(reader);
+                setElementStringList(v);
+                continue;
+            }
+            if (tag == QStringLiteral("number")) {
+                setElementNumber(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QStringLiteral("float")) {
+                setElementFloat(reader.readElementText().toFloat());
+                continue;
+            }
+            if (tag == QStringLiteral("double")) {
+                setElementDouble(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QStringLiteral("date")) {
+                DomDate *v = new DomDate();
+                v->read(reader);
+                setElementDate(v);
+                continue;
+            }
+            if (tag == QStringLiteral("time")) {
+                DomTime *v = new DomTime();
+                v->read(reader);
+                setElementTime(v);
+                continue;
+            }
+            if (tag == QStringLiteral("datetime")) {
+                DomDateTime *v = new DomDateTime();
+                v->read(reader);
+                setElementDateTime(v);
+                continue;
+            }
+            if (tag == QStringLiteral("pointf")) {
+                DomPointF *v = new DomPointF();
+                v->read(reader);
+                setElementPointF(v);
+                continue;
+            }
+            if (tag == QStringLiteral("rectf")) {
+                DomRectF *v = new DomRectF();
+                v->read(reader);
+                setElementRectF(v);
+                continue;
+            }
+            if (tag == QStringLiteral("sizef")) {
+                DomSizeF *v = new DomSizeF();
+                v->read(reader);
+                setElementSizeF(v);
+                continue;
+            }
+            if (tag == QStringLiteral("longlong")) {
+                setElementLongLong(reader.readElementText().toLongLong());
+                continue;
+            }
+            if (tag == QStringLiteral("char")) {
+                DomChar *v = new DomChar();
+                v->read(reader);
+                setElementChar(v);
+                continue;
+            }
+            if (tag == QStringLiteral("url")) {
+                DomUrl *v = new DomUrl();
+                v->read(reader);
+                setElementUrl(v);
+                continue;
+            }
+            if (tag == QStringLiteral("uint")) {
+                setElementUInt(reader.readElementText().toUInt());
+                continue;
+            }
+            if (tag == QStringLiteral("ulonglong")) {
+                setElementULongLong(reader.readElementText().toULongLong());
+                continue;
+            }
+            if (tag == QStringLiteral("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(reader);
+                setElementBrush(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomProperty::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("property") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (hasAttributeStdset())
+        writer.writeAttribute(QStringLiteral("stdset"), QString::number(attributeStdset()));
+
+    switch (kind()) {
+        case Bool: {
+            writer.writeTextElement(QStringLiteral("bool"), elementBool());
+            break;
+        }
+        case Color: {
+            DomColor* v = elementColor();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("color"));
+            }
+            break;
+        }
+        case Cstring: {
+            writer.writeTextElement(QStringLiteral("cstring"), elementCstring());
+            break;
+        }
+        case Cursor: {
+            writer.writeTextElement(QStringLiteral("cursor"), QString::number(elementCursor()));
+            break;
+        }
+        case CursorShape: {
+            writer.writeTextElement(QStringLiteral("cursorShape"), elementCursorShape());
+            break;
+        }
+        case Enum: {
+            writer.writeTextElement(QStringLiteral("enum"), elementEnum());
+            break;
+        }
+        case Font: {
+            DomFont* v = elementFont();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("font"));
+            }
+            break;
+        }
+        case IconSet: {
+            DomResourceIcon* v = elementIconSet();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("iconset"));
+            }
+            break;
+        }
+        case Pixmap: {
+            DomResourcePixmap* v = elementPixmap();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("pixmap"));
+            }
+            break;
+        }
+        case Palette: {
+            DomPalette* v = elementPalette();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("palette"));
+            }
+            break;
+        }
+        case Point: {
+            DomPoint* v = elementPoint();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("point"));
+            }
+            break;
+        }
+        case Rect: {
+            DomRect* v = elementRect();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("rect"));
+            }
+            break;
+        }
+        case Set: {
+            writer.writeTextElement(QStringLiteral("set"), elementSet());
+            break;
+        }
+        case Locale: {
+            DomLocale* v = elementLocale();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("locale"));
+            }
+            break;
+        }
+        case SizePolicy: {
+            DomSizePolicy* v = elementSizePolicy();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("sizepolicy"));
+            }
+            break;
+        }
+        case Size: {
+            DomSize* v = elementSize();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("size"));
+            }
+            break;
+        }
+        case String: {
+            DomString* v = elementString();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("string"));
+            }
+            break;
+        }
+        case StringList: {
+            DomStringList* v = elementStringList();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("stringlist"));
+            }
+            break;
+        }
+        case Number: {
+            writer.writeTextElement(QStringLiteral("number"), QString::number(elementNumber()));
+            break;
+        }
+        case Float: {
+            writer.writeTextElement(QStringLiteral("float"), QString::number(elementFloat(), 'f', 8));
+            break;
+        }
+        case Double: {
+            writer.writeTextElement(QStringLiteral("double"), QString::number(elementDouble(), 'f', 15));
+            break;
+        }
+        case Date: {
+            DomDate* v = elementDate();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("date"));
+            }
+            break;
+        }
+        case Time: {
+            DomTime* v = elementTime();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("time"));
+            }
+            break;
+        }
+        case DateTime: {
+            DomDateTime* v = elementDateTime();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("datetime"));
+            }
+            break;
+        }
+        case PointF: {
+            DomPointF* v = elementPointF();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("pointf"));
+            }
+            break;
+        }
+        case RectF: {
+            DomRectF* v = elementRectF();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("rectf"));
+            }
+            break;
+        }
+        case SizeF: {
+            DomSizeF* v = elementSizeF();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("sizef"));
+            }
+            break;
+        }
+        case LongLong: {
+            writer.writeTextElement(QStringLiteral("longLong"), QString::number(elementLongLong()));
+            break;
+        }
+        case Char: {
+            DomChar* v = elementChar();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("char"));
+            }
+            break;
+        }
+        case Url: {
+            DomUrl* v = elementUrl();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("url"));
+            }
+            break;
+        }
+        case UInt: {
+            writer.writeTextElement(QStringLiteral("UInt"), QString::number(elementUInt()));
+            break;
+        }
+        case ULongLong: {
+            writer.writeTextElement(QStringLiteral("uLongLong"), QString::number(elementULongLong()));
+            break;
+        }
+        case Brush: {
+            DomBrush* v = elementBrush();
+            if (v != 0) {
+                v->write(writer, QStringLiteral("brush"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomProperty::setElementBool(const QString& a)
+{
+    clear(false);
+    m_kind = Bool;
+    m_bool = a;
+}
+
+DomColor* DomProperty::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    return a;
+}
+
+void DomProperty::setElementColor(DomColor* a)
+{
+    clear(false);
+    m_kind = Color;
+    m_color = a;
+}
+
+void DomProperty::setElementCstring(const QString& a)
+{
+    clear(false);
+    m_kind = Cstring;
+    m_cstring = a;
+}
+
+void DomProperty::setElementCursor(int a)
+{
+    clear(false);
+    m_kind = Cursor;
+    m_cursor = a;
+}
+
+void DomProperty::setElementCursorShape(const QString& a)
+{
+    clear(false);
+    m_kind = CursorShape;
+    m_cursorShape = a;
+}
+
+void DomProperty::setElementEnum(const QString& a)
+{
+    clear(false);
+    m_kind = Enum;
+    m_enum = a;
+}
+
+DomFont* DomProperty::takeElementFont() 
+{
+    DomFont* a = m_font;
+    m_font = 0;
+    return a;
+}
+
+void DomProperty::setElementFont(DomFont* a)
+{
+    clear(false);
+    m_kind = Font;
+    m_font = a;
+}
+
+DomResourceIcon* DomProperty::takeElementIconSet() 
+{
+    DomResourceIcon* a = m_iconSet;
+    m_iconSet = 0;
+    return a;
+}
+
+void DomProperty::setElementIconSet(DomResourceIcon* a)
+{
+    clear(false);
+    m_kind = IconSet;
+    m_iconSet = a;
+}
+
+DomResourcePixmap* DomProperty::takeElementPixmap() 
+{
+    DomResourcePixmap* a = m_pixmap;
+    m_pixmap = 0;
+    return a;
+}
+
+void DomProperty::setElementPixmap(DomResourcePixmap* a)
+{
+    clear(false);
+    m_kind = Pixmap;
+    m_pixmap = a;
+}
+
+DomPalette* DomProperty::takeElementPalette() 
+{
+    DomPalette* a = m_palette;
+    m_palette = 0;
+    return a;
+}
+
+void DomProperty::setElementPalette(DomPalette* a)
+{
+    clear(false);
+    m_kind = Palette;
+    m_palette = a;
+}
+
+DomPoint* DomProperty::takeElementPoint() 
+{
+    DomPoint* a = m_point;
+    m_point = 0;
+    return a;
+}
+
+void DomProperty::setElementPoint(DomPoint* a)
+{
+    clear(false);
+    m_kind = Point;
+    m_point = a;
+}
+
+DomRect* DomProperty::takeElementRect() 
+{
+    DomRect* a = m_rect;
+    m_rect = 0;
+    return a;
+}
+
+void DomProperty::setElementRect(DomRect* a)
+{
+    clear(false);
+    m_kind = Rect;
+    m_rect = a;
+}
+
+void DomProperty::setElementSet(const QString& a)
+{
+    clear(false);
+    m_kind = Set;
+    m_set = a;
+}
+
+DomLocale* DomProperty::takeElementLocale() 
+{
+    DomLocale* a = m_locale;
+    m_locale = 0;
+    return a;
+}
+
+void DomProperty::setElementLocale(DomLocale* a)
+{
+    clear(false);
+    m_kind = Locale;
+    m_locale = a;
+}
+
+DomSizePolicy* DomProperty::takeElementSizePolicy() 
+{
+    DomSizePolicy* a = m_sizePolicy;
+    m_sizePolicy = 0;
+    return a;
+}
+
+void DomProperty::setElementSizePolicy(DomSizePolicy* a)
+{
+    clear(false);
+    m_kind = SizePolicy;
+    m_sizePolicy = a;
+}
+
+DomSize* DomProperty::takeElementSize() 
+{
+    DomSize* a = m_size;
+    m_size = 0;
+    return a;
+}
+
+void DomProperty::setElementSize(DomSize* a)
+{
+    clear(false);
+    m_kind = Size;
+    m_size = a;
+}
+
+DomString* DomProperty::takeElementString() 
+{
+    DomString* a = m_string;
+    m_string = 0;
+    return a;
+}
+
+void DomProperty::setElementString(DomString* a)
+{
+    clear(false);
+    m_kind = String;
+    m_string = a;
+}
+
+DomStringList* DomProperty::takeElementStringList() 
+{
+    DomStringList* a = m_stringList;
+    m_stringList = 0;
+    return a;
+}
+
+void DomProperty::setElementStringList(DomStringList* a)
+{
+    clear(false);
+    m_kind = StringList;
+    m_stringList = a;
+}
+
+void DomProperty::setElementNumber(int a)
+{
+    clear(false);
+    m_kind = Number;
+    m_number = a;
+}
+
+void DomProperty::setElementFloat(float a)
+{
+    clear(false);
+    m_kind = Float;
+    m_float = a;
+}
+
+void DomProperty::setElementDouble(double a)
+{
+    clear(false);
+    m_kind = Double;
+    m_double = a;
+}
+
+DomDate* DomProperty::takeElementDate() 
+{
+    DomDate* a = m_date;
+    m_date = 0;
+    return a;
+}
+
+void DomProperty::setElementDate(DomDate* a)
+{
+    clear(false);
+    m_kind = Date;
+    m_date = a;
+}
+
+DomTime* DomProperty::takeElementTime() 
+{
+    DomTime* a = m_time;
+    m_time = 0;
+    return a;
+}
+
+void DomProperty::setElementTime(DomTime* a)
+{
+    clear(false);
+    m_kind = Time;
+    m_time = a;
+}
+
+DomDateTime* DomProperty::takeElementDateTime() 
+{
+    DomDateTime* a = m_dateTime;
+    m_dateTime = 0;
+    return a;
+}
+
+void DomProperty::setElementDateTime(DomDateTime* a)
+{
+    clear(false);
+    m_kind = DateTime;
+    m_dateTime = a;
+}
+
+DomPointF* DomProperty::takeElementPointF() 
+{
+    DomPointF* a = m_pointF;
+    m_pointF = 0;
+    return a;
+}
+
+void DomProperty::setElementPointF(DomPointF* a)
+{
+    clear(false);
+    m_kind = PointF;
+    m_pointF = a;
+}
+
+DomRectF* DomProperty::takeElementRectF() 
+{
+    DomRectF* a = m_rectF;
+    m_rectF = 0;
+    return a;
+}
+
+void DomProperty::setElementRectF(DomRectF* a)
+{
+    clear(false);
+    m_kind = RectF;
+    m_rectF = a;
+}
+
+DomSizeF* DomProperty::takeElementSizeF() 
+{
+    DomSizeF* a = m_sizeF;
+    m_sizeF = 0;
+    return a;
+}
+
+void DomProperty::setElementSizeF(DomSizeF* a)
+{
+    clear(false);
+    m_kind = SizeF;
+    m_sizeF = a;
+}
+
+void DomProperty::setElementLongLong(qlonglong a)
+{
+    clear(false);
+    m_kind = LongLong;
+    m_longLong = a;
+}
+
+DomChar* DomProperty::takeElementChar() 
+{
+    DomChar* a = m_char;
+    m_char = 0;
+    return a;
+}
+
+void DomProperty::setElementChar(DomChar* a)
+{
+    clear(false);
+    m_kind = Char;
+    m_char = a;
+}
+
+DomUrl* DomProperty::takeElementUrl() 
+{
+    DomUrl* a = m_url;
+    m_url = 0;
+    return a;
+}
+
+void DomProperty::setElementUrl(DomUrl* a)
+{
+    clear(false);
+    m_kind = Url;
+    m_url = a;
+}
+
+void DomProperty::setElementUInt(uint a)
+{
+    clear(false);
+    m_kind = UInt;
+    m_UInt = a;
+}
+
+void DomProperty::setElementULongLong(qulonglong a)
+{
+    clear(false);
+    m_kind = ULongLong;
+    m_uLongLong = a;
+}
+
+DomBrush* DomProperty::takeElementBrush() 
+{
+    DomBrush* a = m_brush;
+    m_brush = 0;
+    return a;
+}
+
+void DomProperty::setElementBrush(DomBrush* a)
+{
+    clear(false);
+    m_kind = Brush;
+    m_brush = a;
+}
+
+void DomConnections::clear(bool clear_all)
+{
+    qDeleteAll(m_connection);
+    m_connection.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomConnections::DomConnections()
+{
+    m_children = 0;
+}
+
+DomConnections::~DomConnections()
+{
+    qDeleteAll(m_connection);
+    m_connection.clear();
+}
+
+void DomConnections::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("connection")) {
+                DomConnection *v = new DomConnection();
+                v->read(reader);
+                m_connection.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomConnections::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connections") : tagName.toLower());
+
+    for (int i = 0; i < m_connection.size(); ++i) {
+        DomConnection* v = m_connection[i];
+        v->write(writer, QStringLiteral("connection"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnections::setElementConnection(const QList<DomConnection*>& a)
+{
+    m_children |= Connection;
+    m_connection = a;
+}
+
+void DomConnection::clear(bool clear_all)
+{
+    delete m_hints;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hints = 0;
+}
+
+DomConnection::DomConnection()
+{
+    m_children = 0;
+    m_hints = 0;
+}
+
+DomConnection::~DomConnection()
+{
+    delete m_hints;
+}
+
+void DomConnection::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("sender")) {
+                setElementSender(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("signal")) {
+                setElementSignal(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("receiver")) {
+                setElementReceiver(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("slot")) {
+                setElementSlot(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("hints")) {
+                DomConnectionHints *v = new DomConnectionHints();
+                v->read(reader);
+                setElementHints(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomConnection::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connection") : tagName.toLower());
+
+    if (m_children & Sender) {
+        writer.writeTextElement(QStringLiteral("sender"), m_sender);
+    }
+
+    if (m_children & Signal) {
+        writer.writeTextElement(QStringLiteral("signal"), m_signal);
+    }
+
+    if (m_children & Receiver) {
+        writer.writeTextElement(QStringLiteral("receiver"), m_receiver);
+    }
+
+    if (m_children & Slot) {
+        writer.writeTextElement(QStringLiteral("slot"), m_slot);
+    }
+
+    if (m_children & Hints) {
+        m_hints->write(writer, QStringLiteral("hints"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnection::setElementSender(const QString& a)
+{
+    m_children |= Sender;
+    m_sender = a;
+}
+
+void DomConnection::setElementSignal(const QString& a)
+{
+    m_children |= Signal;
+    m_signal = a;
+}
+
+void DomConnection::setElementReceiver(const QString& a)
+{
+    m_children |= Receiver;
+    m_receiver = a;
+}
+
+void DomConnection::setElementSlot(const QString& a)
+{
+    m_children |= Slot;
+    m_slot = a;
+}
+
+DomConnectionHints* DomConnection::takeElementHints() 
+{
+    DomConnectionHints* a = m_hints;
+    m_hints = 0;
+    m_children ^= Hints;
+    return a;
+}
+
+void DomConnection::setElementHints(DomConnectionHints* a)
+{
+    delete m_hints;
+    m_children |= Hints;
+    m_hints = a;
+}
+
+void DomConnection::clearElementSender()
+{
+    m_children &= ~Sender;
+}
+
+void DomConnection::clearElementSignal()
+{
+    m_children &= ~Signal;
+}
+
+void DomConnection::clearElementReceiver()
+{
+    m_children &= ~Receiver;
+}
+
+void DomConnection::clearElementSlot()
+{
+    m_children &= ~Slot;
+}
+
+void DomConnection::clearElementHints()
+{
+    delete m_hints;
+    m_hints = 0;
+    m_children &= ~Hints;
+}
+
+void DomConnectionHints::clear(bool clear_all)
+{
+    qDeleteAll(m_hint);
+    m_hint.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomConnectionHints::DomConnectionHints()
+{
+    m_children = 0;
+}
+
+DomConnectionHints::~DomConnectionHints()
+{
+    qDeleteAll(m_hint);
+    m_hint.clear();
+}
+
+void DomConnectionHints::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("hint")) {
+                DomConnectionHint *v = new DomConnectionHint();
+                v->read(reader);
+                m_hint.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomConnectionHints::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhints") : tagName.toLower());
+
+    for (int i = 0; i < m_hint.size(); ++i) {
+        DomConnectionHint* v = m_hint[i];
+        v->write(writer, QStringLiteral("hint"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnectionHints::setElementHint(const QList<DomConnectionHint*>& a)
+{
+    m_children |= Hint;
+    m_hint = a;
+}
+
+void DomConnectionHint::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_type = false;
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomConnectionHint::DomConnectionHint()
+{
+    m_children = 0;
+    m_has_attr_type = false;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomConnectionHint::~DomConnectionHint()
+{
+}
+
+void DomConnectionHint::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomConnectionHint::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhint") : tagName.toLower());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QStringLiteral("type"), attributeType());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnectionHint::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomConnectionHint::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomConnectionHint::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomConnectionHint::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomScript::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_source = false;
+    m_has_attr_language = false;
+    }
+
+    m_children = 0;
+}
+
+DomScript::DomScript()
+{
+    m_children = 0;
+    m_has_attr_source = false;
+    m_has_attr_language = false;
+}
+
+DomScript::~DomScript()
+{
+}
+
+void DomScript::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("source")) {
+            setAttributeSource(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomScript::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("script") : tagName.toLower());
+
+    if (hasAttributeSource())
+        writer.writeAttribute(QStringLiteral("source"), attributeSource());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QStringLiteral("language"), attributeLanguage());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidgetData::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomWidgetData::DomWidgetData()
+{
+    m_children = 0;
+}
+
+DomWidgetData::~DomWidgetData()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomWidgetData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomWidgetData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widgetdata") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidgetData::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomDesignerData::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomDesignerData::DomDesignerData()
+{
+    m_children = 0;
+}
+
+DomDesignerData::~DomDesignerData()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomDesignerData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomDesignerData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("designerdata") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QStringLiteral("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDesignerData::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomSlots::clear(bool clear_all)
+{
+    m_signal.clear();
+    m_slot.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomSlots::DomSlots()
+{
+    m_children = 0;
+}
+
+DomSlots::~DomSlots()
+{
+    m_signal.clear();
+    m_slot.clear();
+}
+
+void DomSlots::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("signal")) {
+                m_signal.append(reader.readElementText());
+                continue;
+            }
+            if (tag == QStringLiteral("slot")) {
+                m_slot.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomSlots::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("slots") : tagName.toLower());
+
+    for (int i = 0; i < m_signal.size(); ++i) {
+        QString v = m_signal[i];
+        writer.writeTextElement(QStringLiteral("signal"), v);
+    }
+    for (int i = 0; i < m_slot.size(); ++i) {
+        QString v = m_slot[i];
+        writer.writeTextElement(QStringLiteral("slot"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSlots::setElementSignal(const QStringList& a)
+{
+    m_children |= Signal;
+    m_signal = a;
+}
+
+void DomSlots::setElementSlot(const QStringList& a)
+{
+    m_children |= Slot;
+    m_slot = a;
+}
+
+void DomPropertySpecifications::clear(bool clear_all)
+{
+    qDeleteAll(m_stringpropertyspecification);
+    m_stringpropertyspecification.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomPropertySpecifications::DomPropertySpecifications()
+{
+    m_children = 0;
+}
+
+DomPropertySpecifications::~DomPropertySpecifications()
+{
+    qDeleteAll(m_stringpropertyspecification);
+    m_stringpropertyspecification.clear();
+}
+
+void DomPropertySpecifications::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QStringLiteral("stringpropertyspecification")) {
+                DomStringPropertySpecification *v = new DomStringPropertySpecification();
+                v->read(reader);
+                m_stringpropertyspecification.append(v);
+                continue;
+            }
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomPropertySpecifications::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertyspecifications") : tagName.toLower());
+
+    for (int i = 0; i < m_stringpropertyspecification.size(); ++i) {
+        DomStringPropertySpecification* v = m_stringpropertyspecification[i];
+        v->write(writer, QStringLiteral("stringpropertyspecification"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPropertySpecifications::setElementStringpropertyspecification(const QList<DomStringPropertySpecification*>& a)
+{
+    m_children |= Stringpropertyspecification;
+    m_stringpropertyspecification = a;
+}
+
+void DomStringPropertySpecification::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_type = false;
+    m_has_attr_notr = false;
+    }
+
+    m_children = 0;
+}
+
+DomStringPropertySpecification::DomStringPropertySpecification()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_has_attr_type = false;
+    m_has_attr_notr = false;
+}
+
+DomStringPropertySpecification::~DomStringPropertySpecification()
+{
+}
+
+void DomStringPropertySpecification::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QStringLiteral("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QStringLiteral("notr")) {
+            setAttributeNotr(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QStringLiteral("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+void DomStringPropertySpecification::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringpropertyspecification") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QStringLiteral("name"), attributeName());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QStringLiteral("type"), attributeType());
+
+    if (hasAttributeNotr())
+        writer.writeAttribute(QStringLiteral("notr"), attributeNotr());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/designer/src/lib/uilib/ui4_p.h b/src/designer/src/lib/uilib/ui4_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a56c9eadc1f742fcd48e9bc16daf54da57f9f94
--- /dev/null
+++ b/src/designer/src/lib/uilib/ui4_p.h
@@ -0,0 +1,3603 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications 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 for the convenience
+// of Qt Designer.  This header
+// file may change from version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+// THIS FILE IS AUTOMATICALLY GENERATED
+
+#ifndef UI4_H
+#define UI4_H
+
+#include <QtCore/QList>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QXmlStreamReader>
+#include <QtCore/QXmlStreamWriter>
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+#define QDESIGNER_UILIB_EXTERN Q_DECL_EXPORT
+#define QDESIGNER_UILIB_IMPORT Q_DECL_IMPORT
+
+#if defined(QT_DESIGNER_STATIC) || defined(QT_UIC) || defined(QT_UIC3)
+#  define QDESIGNER_UILIB_EXPORT
+#elif defined(QDESIGNER_UILIB_LIBRARY)
+#  define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_EXTERN
+#else
+#  define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_IMPORT
+#endif
+
+#ifndef QDESIGNER_UILIB_EXPORT
+#    define QDESIGNER_UILIB_EXPORT
+#endif
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+
+/*******************************************************************************
+** Forward declarations
+*/
+
+class DomUI;
+class DomIncludes;
+class DomInclude;
+class DomResources;
+class DomResource;
+class DomActionGroup;
+class DomAction;
+class DomActionRef;
+class DomButtonGroup;
+class DomButtonGroups;
+class DomImages;
+class DomImage;
+class DomImageData;
+class DomCustomWidgets;
+class DomHeader;
+class DomCustomWidget;
+class DomProperties;
+class DomPropertyData;
+class DomSizePolicyData;
+class DomLayoutDefault;
+class DomLayoutFunction;
+class DomTabStops;
+class DomLayout;
+class DomLayoutItem;
+class DomRow;
+class DomColumn;
+class DomItem;
+class DomWidget;
+class DomSpacer;
+class DomColor;
+class DomGradientStop;
+class DomGradient;
+class DomBrush;
+class DomColorRole;
+class DomColorGroup;
+class DomPalette;
+class DomFont;
+class DomPoint;
+class DomRect;
+class DomLocale;
+class DomSizePolicy;
+class DomSize;
+class DomDate;
+class DomTime;
+class DomDateTime;
+class DomStringList;
+class DomResourcePixmap;
+class DomResourceIcon;
+class DomString;
+class DomPointF;
+class DomRectF;
+class DomSizeF;
+class DomChar;
+class DomUrl;
+class DomProperty;
+class DomConnections;
+class DomConnection;
+class DomConnectionHints;
+class DomConnectionHint;
+class DomScript;
+class DomWidgetData;
+class DomDesignerData;
+class DomSlots;
+class DomPropertySpecifications;
+class DomStringPropertySpecification;
+
+/*******************************************************************************
+** Declarations
+*/
+
+class QDESIGNER_UILIB_EXPORT DomUI {
+public:
+    DomUI();
+    ~DomUI();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeVersion() const { return m_has_attr_version; }
+    inline QString attributeVersion() const { return m_attr_version; }
+    inline void setAttributeVersion(const QString& a) { m_attr_version = a; m_has_attr_version = true; }
+    inline void clearAttributeVersion() { m_has_attr_version = false; }
+
+    inline bool hasAttributeLanguage() const { return m_has_attr_language; }
+    inline QString attributeLanguage() const { return m_attr_language; }
+    inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; }
+    inline void clearAttributeLanguage() { m_has_attr_language = false; }
+
+    inline bool hasAttributeDisplayname() const { return m_has_attr_displayname; }
+    inline QString attributeDisplayname() const { return m_attr_displayname; }
+    inline void setAttributeDisplayname(const QString& a) { m_attr_displayname = a; m_has_attr_displayname = true; }
+    inline void clearAttributeDisplayname() { m_has_attr_displayname = false; }
+
+    inline bool hasAttributeStdsetdef() const { return m_has_attr_stdsetdef; }
+    inline int attributeStdsetdef() const { return m_attr_stdsetdef; }
+    inline void setAttributeStdsetdef(int a) { m_attr_stdsetdef = a; m_has_attr_stdsetdef = true; }
+    inline void clearAttributeStdsetdef() { m_has_attr_stdsetdef = false; }
+
+    inline bool hasAttributeStdSetDef() const { return m_has_attr_stdSetDef; }
+    inline int attributeStdSetDef() const { return m_attr_stdSetDef; }
+    inline void setAttributeStdSetDef(int a) { m_attr_stdSetDef = a; m_has_attr_stdSetDef = true; }
+    inline void clearAttributeStdSetDef() { m_has_attr_stdSetDef = false; }
+
+    // child element accessors
+    inline QString elementAuthor() const { return m_author; }
+    void setElementAuthor(const QString& a);
+    inline bool hasElementAuthor() const { return m_children & Author; }
+    void clearElementAuthor();
+
+    inline QString elementComment() const { return m_comment; }
+    void setElementComment(const QString& a);
+    inline bool hasElementComment() const { return m_children & Comment; }
+    void clearElementComment();
+
+    inline QString elementExportMacro() const { return m_exportMacro; }
+    void setElementExportMacro(const QString& a);
+    inline bool hasElementExportMacro() const { return m_children & ExportMacro; }
+    void clearElementExportMacro();
+
+    inline QString elementClass() const { return m_class; }
+    void setElementClass(const QString& a);
+    inline bool hasElementClass() const { return m_children & Class; }
+    void clearElementClass();
+
+    inline DomWidget* elementWidget() const { return m_widget; }
+    DomWidget* takeElementWidget();
+    void setElementWidget(DomWidget* a);
+    inline bool hasElementWidget() const { return m_children & Widget; }
+    void clearElementWidget();
+
+    inline DomLayoutDefault* elementLayoutDefault() const { return m_layoutDefault; }
+    DomLayoutDefault* takeElementLayoutDefault();
+    void setElementLayoutDefault(DomLayoutDefault* a);
+    inline bool hasElementLayoutDefault() const { return m_children & LayoutDefault; }
+    void clearElementLayoutDefault();
+
+    inline DomLayoutFunction* elementLayoutFunction() const { return m_layoutFunction; }
+    DomLayoutFunction* takeElementLayoutFunction();
+    void setElementLayoutFunction(DomLayoutFunction* a);
+    inline bool hasElementLayoutFunction() const { return m_children & LayoutFunction; }
+    void clearElementLayoutFunction();
+
+    inline QString elementPixmapFunction() const { return m_pixmapFunction; }
+    void setElementPixmapFunction(const QString& a);
+    inline bool hasElementPixmapFunction() const { return m_children & PixmapFunction; }
+    void clearElementPixmapFunction();
+
+    inline DomCustomWidgets* elementCustomWidgets() const { return m_customWidgets; }
+    DomCustomWidgets* takeElementCustomWidgets();
+    void setElementCustomWidgets(DomCustomWidgets* a);
+    inline bool hasElementCustomWidgets() const { return m_children & CustomWidgets; }
+    void clearElementCustomWidgets();
+
+    inline DomTabStops* elementTabStops() const { return m_tabStops; }
+    DomTabStops* takeElementTabStops();
+    void setElementTabStops(DomTabStops* a);
+    inline bool hasElementTabStops() const { return m_children & TabStops; }
+    void clearElementTabStops();
+
+    inline DomImages* elementImages() const { return m_images; }
+    DomImages* takeElementImages();
+    void setElementImages(DomImages* a);
+    inline bool hasElementImages() const { return m_children & Images; }
+    void clearElementImages();
+
+    inline DomIncludes* elementIncludes() const { return m_includes; }
+    DomIncludes* takeElementIncludes();
+    void setElementIncludes(DomIncludes* a);
+    inline bool hasElementIncludes() const { return m_children & Includes; }
+    void clearElementIncludes();
+
+    inline DomResources* elementResources() const { return m_resources; }
+    DomResources* takeElementResources();
+    void setElementResources(DomResources* a);
+    inline bool hasElementResources() const { return m_children & Resources; }
+    void clearElementResources();
+
+    inline DomConnections* elementConnections() const { return m_connections; }
+    DomConnections* takeElementConnections();
+    void setElementConnections(DomConnections* a);
+    inline bool hasElementConnections() const { return m_children & Connections; }
+    void clearElementConnections();
+
+    inline DomDesignerData* elementDesignerdata() const { return m_designerdata; }
+    DomDesignerData* takeElementDesignerdata();
+    void setElementDesignerdata(DomDesignerData* a);
+    inline bool hasElementDesignerdata() const { return m_children & Designerdata; }
+    void clearElementDesignerdata();
+
+    inline DomSlots* elementSlots() const { return m_slots; }
+    DomSlots* takeElementSlots();
+    void setElementSlots(DomSlots* a);
+    inline bool hasElementSlots() const { return m_children & Slots; }
+    void clearElementSlots();
+
+    inline DomButtonGroups* elementButtonGroups() const { return m_buttonGroups; }
+    DomButtonGroups* takeElementButtonGroups();
+    void setElementButtonGroups(DomButtonGroups* a);
+    inline bool hasElementButtonGroups() const { return m_children & ButtonGroups; }
+    void clearElementButtonGroups();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_version;
+    bool m_has_attr_version;
+
+    QString m_attr_language;
+    bool m_has_attr_language;
+
+    QString m_attr_displayname;
+    bool m_has_attr_displayname;
+
+    int m_attr_stdsetdef;
+    bool m_has_attr_stdsetdef;
+
+    int m_attr_stdSetDef;
+    bool m_has_attr_stdSetDef;
+
+    // child element data
+    uint m_children;
+    QString m_author;
+    QString m_comment;
+    QString m_exportMacro;
+    QString m_class;
+    DomWidget* m_widget;
+    DomLayoutDefault* m_layoutDefault;
+    DomLayoutFunction* m_layoutFunction;
+    QString m_pixmapFunction;
+    DomCustomWidgets* m_customWidgets;
+    DomTabStops* m_tabStops;
+    DomImages* m_images;
+    DomIncludes* m_includes;
+    DomResources* m_resources;
+    DomConnections* m_connections;
+    DomDesignerData* m_designerdata;
+    DomSlots* m_slots;
+    DomButtonGroups* m_buttonGroups;
+    enum Child {
+        Author = 1,
+        Comment = 2,
+        ExportMacro = 4,
+        Class = 8,
+        Widget = 16,
+        LayoutDefault = 32,
+        LayoutFunction = 64,
+        PixmapFunction = 128,
+        CustomWidgets = 256,
+        TabStops = 512,
+        Images = 1024,
+        Includes = 2048,
+        Resources = 4096,
+        Connections = 8192,
+        Designerdata = 16384,
+        Slots = 32768,
+        ButtonGroups = 65536
+    };
+
+    DomUI(const DomUI &other);
+    void operator = (const DomUI&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomIncludes {
+public:
+    DomIncludes();
+    ~DomIncludes();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomInclude*> elementInclude() const { return m_include; }
+    void setElementInclude(const QList<DomInclude*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomInclude*> m_include;
+    enum Child {
+        Include = 1
+    };
+
+    DomIncludes(const DomIncludes &other);
+    void operator = (const DomIncludes&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomInclude {
+public:
+    DomInclude();
+    ~DomInclude();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeLocation() const { return m_has_attr_location; }
+    inline QString attributeLocation() const { return m_attr_location; }
+    inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; }
+    inline void clearAttributeLocation() { m_has_attr_location = false; }
+
+    inline bool hasAttributeImpldecl() const { return m_has_attr_impldecl; }
+    inline QString attributeImpldecl() const { return m_attr_impldecl; }
+    inline void setAttributeImpldecl(const QString& a) { m_attr_impldecl = a; m_has_attr_impldecl = true; }
+    inline void clearAttributeImpldecl() { m_has_attr_impldecl = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_location;
+    bool m_has_attr_location;
+
+    QString m_attr_impldecl;
+    bool m_has_attr_impldecl;
+
+    // child element data
+    uint m_children;
+
+    DomInclude(const DomInclude &other);
+    void operator = (const DomInclude&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomResources {
+public:
+    DomResources();
+    ~DomResources();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+    inline QList<DomResource*> elementInclude() const { return m_include; }
+    void setElementInclude(const QList<DomResource*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+    QList<DomResource*> m_include;
+    enum Child {
+        Include = 1
+    };
+
+    DomResources(const DomResources &other);
+    void operator = (const DomResources&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomResource {
+public:
+    DomResource();
+    ~DomResource();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeLocation() const { return m_has_attr_location; }
+    inline QString attributeLocation() const { return m_attr_location; }
+    inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; }
+    inline void clearAttributeLocation() { m_has_attr_location = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_location;
+    bool m_has_attr_location;
+
+    // child element data
+    uint m_children;
+
+    DomResource(const DomResource &other);
+    void operator = (const DomResource&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomActionGroup {
+public:
+    DomActionGroup();
+    ~DomActionGroup();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+    inline QList<DomAction*> elementAction() const { return m_action; }
+    void setElementAction(const QList<DomAction*>& a);
+
+    inline QList<DomActionGroup*> elementActionGroup() const { return m_actionGroup; }
+    void setElementActionGroup(const QList<DomActionGroup*>& a);
+
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomProperty*> elementAttribute() const { return m_attribute; }
+    void setElementAttribute(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+    QList<DomAction*> m_action;
+    QList<DomActionGroup*> m_actionGroup;
+    QList<DomProperty*> m_property;
+    QList<DomProperty*> m_attribute;
+    enum Child {
+        Action = 1,
+        ActionGroup = 2,
+        Property = 4,
+        Attribute = 8
+    };
+
+    DomActionGroup(const DomActionGroup &other);
+    void operator = (const DomActionGroup&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomAction {
+public:
+    DomAction();
+    ~DomAction();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    inline bool hasAttributeMenu() const { return m_has_attr_menu; }
+    inline QString attributeMenu() const { return m_attr_menu; }
+    inline void setAttributeMenu(const QString& a) { m_attr_menu = a; m_has_attr_menu = true; }
+    inline void clearAttributeMenu() { m_has_attr_menu = false; }
+
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomProperty*> elementAttribute() const { return m_attribute; }
+    void setElementAttribute(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    QString m_attr_menu;
+    bool m_has_attr_menu;
+
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    QList<DomProperty*> m_attribute;
+    enum Child {
+        Property = 1,
+        Attribute = 2
+    };
+
+    DomAction(const DomAction &other);
+    void operator = (const DomAction&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomActionRef {
+public:
+    DomActionRef();
+    ~DomActionRef();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+
+    DomActionRef(const DomActionRef &other);
+    void operator = (const DomActionRef&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomButtonGroup {
+public:
+    DomButtonGroup();
+    ~DomButtonGroup();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomProperty*> elementAttribute() const { return m_attribute; }
+    void setElementAttribute(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    QList<DomProperty*> m_attribute;
+    enum Child {
+        Property = 1,
+        Attribute = 2
+    };
+
+    DomButtonGroup(const DomButtonGroup &other);
+    void operator = (const DomButtonGroup&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomButtonGroups {
+public:
+    DomButtonGroups();
+    ~DomButtonGroups();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomButtonGroup*> elementButtonGroup() const { return m_buttonGroup; }
+    void setElementButtonGroup(const QList<DomButtonGroup*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomButtonGroup*> m_buttonGroup;
+    enum Child {
+        ButtonGroup = 1
+    };
+
+    DomButtonGroups(const DomButtonGroups &other);
+    void operator = (const DomButtonGroups&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomImages {
+public:
+    DomImages();
+    ~DomImages();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomImage*> elementImage() const { return m_image; }
+    void setElementImage(const QList<DomImage*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomImage*> m_image;
+    enum Child {
+        Image = 1
+    };
+
+    DomImages(const DomImages &other);
+    void operator = (const DomImages&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomImage {
+public:
+    DomImage();
+    ~DomImage();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+    inline DomImageData* elementData() const { return m_data; }
+    DomImageData* takeElementData();
+    void setElementData(DomImageData* a);
+    inline bool hasElementData() const { return m_children & Data; }
+    void clearElementData();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+    DomImageData* m_data;
+    enum Child {
+        Data = 1
+    };
+
+    DomImage(const DomImage &other);
+    void operator = (const DomImage&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomImageData {
+public:
+    DomImageData();
+    ~DomImageData();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeFormat() const { return m_has_attr_format; }
+    inline QString attributeFormat() const { return m_attr_format; }
+    inline void setAttributeFormat(const QString& a) { m_attr_format = a; m_has_attr_format = true; }
+    inline void clearAttributeFormat() { m_has_attr_format = false; }
+
+    inline bool hasAttributeLength() const { return m_has_attr_length; }
+    inline int attributeLength() const { return m_attr_length; }
+    inline void setAttributeLength(int a) { m_attr_length = a; m_has_attr_length = true; }
+    inline void clearAttributeLength() { m_has_attr_length = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_format;
+    bool m_has_attr_format;
+
+    int m_attr_length;
+    bool m_has_attr_length;
+
+    // child element data
+    uint m_children;
+
+    DomImageData(const DomImageData &other);
+    void operator = (const DomImageData&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomCustomWidgets {
+public:
+    DomCustomWidgets();
+    ~DomCustomWidgets();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomCustomWidget*> elementCustomWidget() const { return m_customWidget; }
+    void setElementCustomWidget(const QList<DomCustomWidget*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomCustomWidget*> m_customWidget;
+    enum Child {
+        CustomWidget = 1
+    };
+
+    DomCustomWidgets(const DomCustomWidgets &other);
+    void operator = (const DomCustomWidgets&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomHeader {
+public:
+    DomHeader();
+    ~DomHeader();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeLocation() const { return m_has_attr_location; }
+    inline QString attributeLocation() const { return m_attr_location; }
+    inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; }
+    inline void clearAttributeLocation() { m_has_attr_location = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_location;
+    bool m_has_attr_location;
+
+    // child element data
+    uint m_children;
+
+    DomHeader(const DomHeader &other);
+    void operator = (const DomHeader&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomCustomWidget {
+public:
+    DomCustomWidget();
+    ~DomCustomWidget();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QString elementClass() const { return m_class; }
+    void setElementClass(const QString& a);
+    inline bool hasElementClass() const { return m_children & Class; }
+    void clearElementClass();
+
+    inline QString elementExtends() const { return m_extends; }
+    void setElementExtends(const QString& a);
+    inline bool hasElementExtends() const { return m_children & Extends; }
+    void clearElementExtends();
+
+    inline DomHeader* elementHeader() const { return m_header; }
+    DomHeader* takeElementHeader();
+    void setElementHeader(DomHeader* a);
+    inline bool hasElementHeader() const { return m_children & Header; }
+    void clearElementHeader();
+
+    inline DomSize* elementSizeHint() const { return m_sizeHint; }
+    DomSize* takeElementSizeHint();
+    void setElementSizeHint(DomSize* a);
+    inline bool hasElementSizeHint() const { return m_children & SizeHint; }
+    void clearElementSizeHint();
+
+    inline QString elementAddPageMethod() const { return m_addPageMethod; }
+    void setElementAddPageMethod(const QString& a);
+    inline bool hasElementAddPageMethod() const { return m_children & AddPageMethod; }
+    void clearElementAddPageMethod();
+
+    inline int elementContainer() const { return m_container; }
+    void setElementContainer(int a);
+    inline bool hasElementContainer() const { return m_children & Container; }
+    void clearElementContainer();
+
+    inline DomSizePolicyData* elementSizePolicy() const { return m_sizePolicy; }
+    DomSizePolicyData* takeElementSizePolicy();
+    void setElementSizePolicy(DomSizePolicyData* a);
+    inline bool hasElementSizePolicy() const { return m_children & SizePolicy; }
+    void clearElementSizePolicy();
+
+    inline QString elementPixmap() const { return m_pixmap; }
+    void setElementPixmap(const QString& a);
+    inline bool hasElementPixmap() const { return m_children & Pixmap; }
+    void clearElementPixmap();
+
+    inline DomScript* elementScript() const { return m_script; }
+    DomScript* takeElementScript();
+    void setElementScript(DomScript* a);
+    inline bool hasElementScript() const { return m_children & Script; }
+    void clearElementScript();
+
+    inline DomProperties* elementProperties() const { return m_properties; }
+    DomProperties* takeElementProperties();
+    void setElementProperties(DomProperties* a);
+    inline bool hasElementProperties() const { return m_children & Properties; }
+    void clearElementProperties();
+
+    inline DomSlots* elementSlots() const { return m_slots; }
+    DomSlots* takeElementSlots();
+    void setElementSlots(DomSlots* a);
+    inline bool hasElementSlots() const { return m_children & Slots; }
+    void clearElementSlots();
+
+    inline DomPropertySpecifications* elementPropertyspecifications() const { return m_propertyspecifications; }
+    DomPropertySpecifications* takeElementPropertyspecifications();
+    void setElementPropertyspecifications(DomPropertySpecifications* a);
+    inline bool hasElementPropertyspecifications() const { return m_children & Propertyspecifications; }
+    void clearElementPropertyspecifications();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QString m_class;
+    QString m_extends;
+    DomHeader* m_header;
+    DomSize* m_sizeHint;
+    QString m_addPageMethod;
+    int m_container;
+    DomSizePolicyData* m_sizePolicy;
+    QString m_pixmap;
+    DomScript* m_script;
+    DomProperties* m_properties;
+    DomSlots* m_slots;
+    DomPropertySpecifications* m_propertyspecifications;
+    enum Child {
+        Class = 1,
+        Extends = 2,
+        Header = 4,
+        SizeHint = 8,
+        AddPageMethod = 16,
+        Container = 32,
+        SizePolicy = 64,
+        Pixmap = 128,
+        Script = 256,
+        Properties = 512,
+        Slots = 1024,
+        Propertyspecifications = 2048
+    };
+
+    DomCustomWidget(const DomCustomWidget &other);
+    void operator = (const DomCustomWidget&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomProperties {
+public:
+    DomProperties();
+    ~DomProperties();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomPropertyData*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomPropertyData*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomPropertyData*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomProperties(const DomProperties &other);
+    void operator = (const DomProperties&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomPropertyData {
+public:
+    DomPropertyData();
+    ~DomPropertyData();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeType() const { return m_has_attr_type; }
+    inline QString attributeType() const { return m_attr_type; }
+    inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; }
+    inline void clearAttributeType() { m_has_attr_type = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_type;
+    bool m_has_attr_type;
+
+    // child element data
+    uint m_children;
+
+    DomPropertyData(const DomPropertyData &other);
+    void operator = (const DomPropertyData&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSizePolicyData {
+public:
+    DomSizePolicyData();
+    ~DomSizePolicyData();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementHorData() const { return m_horData; }
+    void setElementHorData(int a);
+    inline bool hasElementHorData() const { return m_children & HorData; }
+    void clearElementHorData();
+
+    inline int elementVerData() const { return m_verData; }
+    void setElementVerData(int a);
+    inline bool hasElementVerData() const { return m_children & VerData; }
+    void clearElementVerData();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_horData;
+    int m_verData;
+    enum Child {
+        HorData = 1,
+        VerData = 2
+    };
+
+    DomSizePolicyData(const DomSizePolicyData &other);
+    void operator = (const DomSizePolicyData&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomLayoutDefault {
+public:
+    DomLayoutDefault();
+    ~DomLayoutDefault();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeSpacing() const { return m_has_attr_spacing; }
+    inline int attributeSpacing() const { return m_attr_spacing; }
+    inline void setAttributeSpacing(int a) { m_attr_spacing = a; m_has_attr_spacing = true; }
+    inline void clearAttributeSpacing() { m_has_attr_spacing = false; }
+
+    inline bool hasAttributeMargin() const { return m_has_attr_margin; }
+    inline int attributeMargin() const { return m_attr_margin; }
+    inline void setAttributeMargin(int a) { m_attr_margin = a; m_has_attr_margin = true; }
+    inline void clearAttributeMargin() { m_has_attr_margin = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    int m_attr_spacing;
+    bool m_has_attr_spacing;
+
+    int m_attr_margin;
+    bool m_has_attr_margin;
+
+    // child element data
+    uint m_children;
+
+    DomLayoutDefault(const DomLayoutDefault &other);
+    void operator = (const DomLayoutDefault&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomLayoutFunction {
+public:
+    DomLayoutFunction();
+    ~DomLayoutFunction();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeSpacing() const { return m_has_attr_spacing; }
+    inline QString attributeSpacing() const { return m_attr_spacing; }
+    inline void setAttributeSpacing(const QString& a) { m_attr_spacing = a; m_has_attr_spacing = true; }
+    inline void clearAttributeSpacing() { m_has_attr_spacing = false; }
+
+    inline bool hasAttributeMargin() const { return m_has_attr_margin; }
+    inline QString attributeMargin() const { return m_attr_margin; }
+    inline void setAttributeMargin(const QString& a) { m_attr_margin = a; m_has_attr_margin = true; }
+    inline void clearAttributeMargin() { m_has_attr_margin = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_spacing;
+    bool m_has_attr_spacing;
+
+    QString m_attr_margin;
+    bool m_has_attr_margin;
+
+    // child element data
+    uint m_children;
+
+    DomLayoutFunction(const DomLayoutFunction &other);
+    void operator = (const DomLayoutFunction&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomTabStops {
+public:
+    DomTabStops();
+    ~DomTabStops();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QStringList elementTabStop() const { return m_tabStop; }
+    void setElementTabStop(const QStringList& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QStringList m_tabStop;
+    enum Child {
+        TabStop = 1
+    };
+
+    DomTabStops(const DomTabStops &other);
+    void operator = (const DomTabStops&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomLayout {
+public:
+    DomLayout();
+    ~DomLayout();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeClass() const { return m_has_attr_class; }
+    inline QString attributeClass() const { return m_attr_class; }
+    inline void setAttributeClass(const QString& a) { m_attr_class = a; m_has_attr_class = true; }
+    inline void clearAttributeClass() { m_has_attr_class = false; }
+
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    inline bool hasAttributeStretch() const { return m_has_attr_stretch; }
+    inline QString attributeStretch() const { return m_attr_stretch; }
+    inline void setAttributeStretch(const QString& a) { m_attr_stretch = a; m_has_attr_stretch = true; }
+    inline void clearAttributeStretch() { m_has_attr_stretch = false; }
+
+    inline bool hasAttributeRowStretch() const { return m_has_attr_rowStretch; }
+    inline QString attributeRowStretch() const { return m_attr_rowStretch; }
+    inline void setAttributeRowStretch(const QString& a) { m_attr_rowStretch = a; m_has_attr_rowStretch = true; }
+    inline void clearAttributeRowStretch() { m_has_attr_rowStretch = false; }
+
+    inline bool hasAttributeColumnStretch() const { return m_has_attr_columnStretch; }
+    inline QString attributeColumnStretch() const { return m_attr_columnStretch; }
+    inline void setAttributeColumnStretch(const QString& a) { m_attr_columnStretch = a; m_has_attr_columnStretch = true; }
+    inline void clearAttributeColumnStretch() { m_has_attr_columnStretch = false; }
+
+    inline bool hasAttributeRowMinimumHeight() const { return m_has_attr_rowMinimumHeight; }
+    inline QString attributeRowMinimumHeight() const { return m_attr_rowMinimumHeight; }
+    inline void setAttributeRowMinimumHeight(const QString& a) { m_attr_rowMinimumHeight = a; m_has_attr_rowMinimumHeight = true; }
+    inline void clearAttributeRowMinimumHeight() { m_has_attr_rowMinimumHeight = false; }
+
+    inline bool hasAttributeColumnMinimumWidth() const { return m_has_attr_columnMinimumWidth; }
+    inline QString attributeColumnMinimumWidth() const { return m_attr_columnMinimumWidth; }
+    inline void setAttributeColumnMinimumWidth(const QString& a) { m_attr_columnMinimumWidth = a; m_has_attr_columnMinimumWidth = true; }
+    inline void clearAttributeColumnMinimumWidth() { m_has_attr_columnMinimumWidth = false; }
+
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomProperty*> elementAttribute() const { return m_attribute; }
+    void setElementAttribute(const QList<DomProperty*>& a);
+
+    inline QList<DomLayoutItem*> elementItem() const { return m_item; }
+    void setElementItem(const QList<DomLayoutItem*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_class;
+    bool m_has_attr_class;
+
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    QString m_attr_stretch;
+    bool m_has_attr_stretch;
+
+    QString m_attr_rowStretch;
+    bool m_has_attr_rowStretch;
+
+    QString m_attr_columnStretch;
+    bool m_has_attr_columnStretch;
+
+    QString m_attr_rowMinimumHeight;
+    bool m_has_attr_rowMinimumHeight;
+
+    QString m_attr_columnMinimumWidth;
+    bool m_has_attr_columnMinimumWidth;
+
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    QList<DomProperty*> m_attribute;
+    QList<DomLayoutItem*> m_item;
+    enum Child {
+        Property = 1,
+        Attribute = 2,
+        Item = 4
+    };
+
+    DomLayout(const DomLayout &other);
+    void operator = (const DomLayout&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomLayoutItem {
+public:
+    DomLayoutItem();
+    ~DomLayoutItem();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeRow() const { return m_has_attr_row; }
+    inline int attributeRow() const { return m_attr_row; }
+    inline void setAttributeRow(int a) { m_attr_row = a; m_has_attr_row = true; }
+    inline void clearAttributeRow() { m_has_attr_row = false; }
+
+    inline bool hasAttributeColumn() const { return m_has_attr_column; }
+    inline int attributeColumn() const { return m_attr_column; }
+    inline void setAttributeColumn(int a) { m_attr_column = a; m_has_attr_column = true; }
+    inline void clearAttributeColumn() { m_has_attr_column = false; }
+
+    inline bool hasAttributeRowSpan() const { return m_has_attr_rowSpan; }
+    inline int attributeRowSpan() const { return m_attr_rowSpan; }
+    inline void setAttributeRowSpan(int a) { m_attr_rowSpan = a; m_has_attr_rowSpan = true; }
+    inline void clearAttributeRowSpan() { m_has_attr_rowSpan = false; }
+
+    inline bool hasAttributeColSpan() const { return m_has_attr_colSpan; }
+    inline int attributeColSpan() const { return m_attr_colSpan; }
+    inline void setAttributeColSpan(int a) { m_attr_colSpan = a; m_has_attr_colSpan = true; }
+    inline void clearAttributeColSpan() { m_has_attr_colSpan = false; }
+
+    inline bool hasAttributeAlignment() const { return m_has_attr_alignment; }
+    inline QString attributeAlignment() const { return m_attr_alignment; }
+    inline void setAttributeAlignment(const QString& a) { m_attr_alignment = a; m_has_attr_alignment = true; }
+    inline void clearAttributeAlignment() { m_has_attr_alignment = false; }
+
+    // child element accessors
+    enum Kind { Unknown = 0, Widget, Layout, Spacer };
+    inline Kind kind() const { return m_kind; }
+
+    inline DomWidget* elementWidget() const { return m_widget; }
+    DomWidget* takeElementWidget();
+    void setElementWidget(DomWidget* a);
+
+    inline DomLayout* elementLayout() const { return m_layout; }
+    DomLayout* takeElementLayout();
+    void setElementLayout(DomLayout* a);
+
+    inline DomSpacer* elementSpacer() const { return m_spacer; }
+    DomSpacer* takeElementSpacer();
+    void setElementSpacer(DomSpacer* a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    int m_attr_row;
+    bool m_has_attr_row;
+
+    int m_attr_column;
+    bool m_has_attr_column;
+
+    int m_attr_rowSpan;
+    bool m_has_attr_rowSpan;
+
+    int m_attr_colSpan;
+    bool m_has_attr_colSpan;
+
+    QString m_attr_alignment;
+    bool m_has_attr_alignment;
+
+    // child element data
+    Kind m_kind;
+    DomWidget* m_widget;
+    DomLayout* m_layout;
+    DomSpacer* m_spacer;
+
+    DomLayoutItem(const DomLayoutItem &other);
+    void operator = (const DomLayoutItem&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomRow {
+public:
+    DomRow();
+    ~DomRow();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomRow(const DomRow &other);
+    void operator = (const DomRow&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomColumn {
+public:
+    DomColumn();
+    ~DomColumn();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomColumn(const DomColumn &other);
+    void operator = (const DomColumn&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomItem {
+public:
+    DomItem();
+    ~DomItem();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeRow() const { return m_has_attr_row; }
+    inline int attributeRow() const { return m_attr_row; }
+    inline void setAttributeRow(int a) { m_attr_row = a; m_has_attr_row = true; }
+    inline void clearAttributeRow() { m_has_attr_row = false; }
+
+    inline bool hasAttributeColumn() const { return m_has_attr_column; }
+    inline int attributeColumn() const { return m_attr_column; }
+    inline void setAttributeColumn(int a) { m_attr_column = a; m_has_attr_column = true; }
+    inline void clearAttributeColumn() { m_has_attr_column = false; }
+
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomItem*> elementItem() const { return m_item; }
+    void setElementItem(const QList<DomItem*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    int m_attr_row;
+    bool m_has_attr_row;
+
+    int m_attr_column;
+    bool m_has_attr_column;
+
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    QList<DomItem*> m_item;
+    enum Child {
+        Property = 1,
+        Item = 2
+    };
+
+    DomItem(const DomItem &other);
+    void operator = (const DomItem&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomWidget {
+public:
+    DomWidget();
+    ~DomWidget();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeClass() const { return m_has_attr_class; }
+    inline QString attributeClass() const { return m_attr_class; }
+    inline void setAttributeClass(const QString& a) { m_attr_class = a; m_has_attr_class = true; }
+    inline void clearAttributeClass() { m_has_attr_class = false; }
+
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    inline bool hasAttributeNative() const { return m_has_attr_native; }
+    inline bool attributeNative() const { return m_attr_native; }
+    inline void setAttributeNative(bool a) { m_attr_native = a; m_has_attr_native = true; }
+    inline void clearAttributeNative() { m_has_attr_native = false; }
+
+    // child element accessors
+    inline QStringList elementClass() const { return m_class; }
+    void setElementClass(const QStringList& a);
+
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+    inline QList<DomScript*> elementScript() const { return m_script; }
+    void setElementScript(const QList<DomScript*>& a);
+
+    inline QList<DomWidgetData*> elementWidgetData() const { return m_widgetData; }
+    void setElementWidgetData(const QList<DomWidgetData*>& a);
+
+    inline QList<DomProperty*> elementAttribute() const { return m_attribute; }
+    void setElementAttribute(const QList<DomProperty*>& a);
+
+    inline QList<DomRow*> elementRow() const { return m_row; }
+    void setElementRow(const QList<DomRow*>& a);
+
+    inline QList<DomColumn*> elementColumn() const { return m_column; }
+    void setElementColumn(const QList<DomColumn*>& a);
+
+    inline QList<DomItem*> elementItem() const { return m_item; }
+    void setElementItem(const QList<DomItem*>& a);
+
+    inline QList<DomLayout*> elementLayout() const { return m_layout; }
+    void setElementLayout(const QList<DomLayout*>& a);
+
+    inline QList<DomWidget*> elementWidget() const { return m_widget; }
+    void setElementWidget(const QList<DomWidget*>& a);
+
+    inline QList<DomAction*> elementAction() const { return m_action; }
+    void setElementAction(const QList<DomAction*>& a);
+
+    inline QList<DomActionGroup*> elementActionGroup() const { return m_actionGroup; }
+    void setElementActionGroup(const QList<DomActionGroup*>& a);
+
+    inline QList<DomActionRef*> elementAddAction() const { return m_addAction; }
+    void setElementAddAction(const QList<DomActionRef*>& a);
+
+    inline QStringList elementZOrder() const { return m_zOrder; }
+    void setElementZOrder(const QStringList& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_class;
+    bool m_has_attr_class;
+
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    bool m_attr_native;
+    bool m_has_attr_native;
+
+    // child element data
+    uint m_children;
+    QStringList m_class;
+    QList<DomProperty*> m_property;
+    QList<DomScript*> m_script;
+    QList<DomWidgetData*> m_widgetData;
+    QList<DomProperty*> m_attribute;
+    QList<DomRow*> m_row;
+    QList<DomColumn*> m_column;
+    QList<DomItem*> m_item;
+    QList<DomLayout*> m_layout;
+    QList<DomWidget*> m_widget;
+    QList<DomAction*> m_action;
+    QList<DomActionGroup*> m_actionGroup;
+    QList<DomActionRef*> m_addAction;
+    QStringList m_zOrder;
+    enum Child {
+        Class = 1,
+        Property = 2,
+        Script = 4,
+        WidgetData = 8,
+        Attribute = 16,
+        Row = 32,
+        Column = 64,
+        Item = 128,
+        Layout = 256,
+        Widget = 512,
+        Action = 1024,
+        ActionGroup = 2048,
+        AddAction = 4096,
+        ZOrder = 8192
+    };
+
+    DomWidget(const DomWidget &other);
+    void operator = (const DomWidget&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSpacer {
+public:
+    DomSpacer();
+    ~DomSpacer();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomSpacer(const DomSpacer &other);
+    void operator = (const DomSpacer&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomColor {
+public:
+    DomColor();
+    ~DomColor();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeAlpha() const { return m_has_attr_alpha; }
+    inline int attributeAlpha() const { return m_attr_alpha; }
+    inline void setAttributeAlpha(int a) { m_attr_alpha = a; m_has_attr_alpha = true; }
+    inline void clearAttributeAlpha() { m_has_attr_alpha = false; }
+
+    // child element accessors
+    inline int elementRed() const { return m_red; }
+    void setElementRed(int a);
+    inline bool hasElementRed() const { return m_children & Red; }
+    void clearElementRed();
+
+    inline int elementGreen() const { return m_green; }
+    void setElementGreen(int a);
+    inline bool hasElementGreen() const { return m_children & Green; }
+    void clearElementGreen();
+
+    inline int elementBlue() const { return m_blue; }
+    void setElementBlue(int a);
+    inline bool hasElementBlue() const { return m_children & Blue; }
+    void clearElementBlue();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    int m_attr_alpha;
+    bool m_has_attr_alpha;
+
+    // child element data
+    uint m_children;
+    int m_red;
+    int m_green;
+    int m_blue;
+    enum Child {
+        Red = 1,
+        Green = 2,
+        Blue = 4
+    };
+
+    DomColor(const DomColor &other);
+    void operator = (const DomColor&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomGradientStop {
+public:
+    DomGradientStop();
+    ~DomGradientStop();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributePosition() const { return m_has_attr_position; }
+    inline double attributePosition() const { return m_attr_position; }
+    inline void setAttributePosition(double a) { m_attr_position = a; m_has_attr_position = true; }
+    inline void clearAttributePosition() { m_has_attr_position = false; }
+
+    // child element accessors
+    inline DomColor* elementColor() const { return m_color; }
+    DomColor* takeElementColor();
+    void setElementColor(DomColor* a);
+    inline bool hasElementColor() const { return m_children & Color; }
+    void clearElementColor();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    double m_attr_position;
+    bool m_has_attr_position;
+
+    // child element data
+    uint m_children;
+    DomColor* m_color;
+    enum Child {
+        Color = 1
+    };
+
+    DomGradientStop(const DomGradientStop &other);
+    void operator = (const DomGradientStop&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomGradient {
+public:
+    DomGradient();
+    ~DomGradient();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeStartX() const { return m_has_attr_startX; }
+    inline double attributeStartX() const { return m_attr_startX; }
+    inline void setAttributeStartX(double a) { m_attr_startX = a; m_has_attr_startX = true; }
+    inline void clearAttributeStartX() { m_has_attr_startX = false; }
+
+    inline bool hasAttributeStartY() const { return m_has_attr_startY; }
+    inline double attributeStartY() const { return m_attr_startY; }
+    inline void setAttributeStartY(double a) { m_attr_startY = a; m_has_attr_startY = true; }
+    inline void clearAttributeStartY() { m_has_attr_startY = false; }
+
+    inline bool hasAttributeEndX() const { return m_has_attr_endX; }
+    inline double attributeEndX() const { return m_attr_endX; }
+    inline void setAttributeEndX(double a) { m_attr_endX = a; m_has_attr_endX = true; }
+    inline void clearAttributeEndX() { m_has_attr_endX = false; }
+
+    inline bool hasAttributeEndY() const { return m_has_attr_endY; }
+    inline double attributeEndY() const { return m_attr_endY; }
+    inline void setAttributeEndY(double a) { m_attr_endY = a; m_has_attr_endY = true; }
+    inline void clearAttributeEndY() { m_has_attr_endY = false; }
+
+    inline bool hasAttributeCentralX() const { return m_has_attr_centralX; }
+    inline double attributeCentralX() const { return m_attr_centralX; }
+    inline void setAttributeCentralX(double a) { m_attr_centralX = a; m_has_attr_centralX = true; }
+    inline void clearAttributeCentralX() { m_has_attr_centralX = false; }
+
+    inline bool hasAttributeCentralY() const { return m_has_attr_centralY; }
+    inline double attributeCentralY() const { return m_attr_centralY; }
+    inline void setAttributeCentralY(double a) { m_attr_centralY = a; m_has_attr_centralY = true; }
+    inline void clearAttributeCentralY() { m_has_attr_centralY = false; }
+
+    inline bool hasAttributeFocalX() const { return m_has_attr_focalX; }
+    inline double attributeFocalX() const { return m_attr_focalX; }
+    inline void setAttributeFocalX(double a) { m_attr_focalX = a; m_has_attr_focalX = true; }
+    inline void clearAttributeFocalX() { m_has_attr_focalX = false; }
+
+    inline bool hasAttributeFocalY() const { return m_has_attr_focalY; }
+    inline double attributeFocalY() const { return m_attr_focalY; }
+    inline void setAttributeFocalY(double a) { m_attr_focalY = a; m_has_attr_focalY = true; }
+    inline void clearAttributeFocalY() { m_has_attr_focalY = false; }
+
+    inline bool hasAttributeRadius() const { return m_has_attr_radius; }
+    inline double attributeRadius() const { return m_attr_radius; }
+    inline void setAttributeRadius(double a) { m_attr_radius = a; m_has_attr_radius = true; }
+    inline void clearAttributeRadius() { m_has_attr_radius = false; }
+
+    inline bool hasAttributeAngle() const { return m_has_attr_angle; }
+    inline double attributeAngle() const { return m_attr_angle; }
+    inline void setAttributeAngle(double a) { m_attr_angle = a; m_has_attr_angle = true; }
+    inline void clearAttributeAngle() { m_has_attr_angle = false; }
+
+    inline bool hasAttributeType() const { return m_has_attr_type; }
+    inline QString attributeType() const { return m_attr_type; }
+    inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; }
+    inline void clearAttributeType() { m_has_attr_type = false; }
+
+    inline bool hasAttributeSpread() const { return m_has_attr_spread; }
+    inline QString attributeSpread() const { return m_attr_spread; }
+    inline void setAttributeSpread(const QString& a) { m_attr_spread = a; m_has_attr_spread = true; }
+    inline void clearAttributeSpread() { m_has_attr_spread = false; }
+
+    inline bool hasAttributeCoordinateMode() const { return m_has_attr_coordinateMode; }
+    inline QString attributeCoordinateMode() const { return m_attr_coordinateMode; }
+    inline void setAttributeCoordinateMode(const QString& a) { m_attr_coordinateMode = a; m_has_attr_coordinateMode = true; }
+    inline void clearAttributeCoordinateMode() { m_has_attr_coordinateMode = false; }
+
+    // child element accessors
+    inline QList<DomGradientStop*> elementGradientStop() const { return m_gradientStop; }
+    void setElementGradientStop(const QList<DomGradientStop*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    double m_attr_startX;
+    bool m_has_attr_startX;
+
+    double m_attr_startY;
+    bool m_has_attr_startY;
+
+    double m_attr_endX;
+    bool m_has_attr_endX;
+
+    double m_attr_endY;
+    bool m_has_attr_endY;
+
+    double m_attr_centralX;
+    bool m_has_attr_centralX;
+
+    double m_attr_centralY;
+    bool m_has_attr_centralY;
+
+    double m_attr_focalX;
+    bool m_has_attr_focalX;
+
+    double m_attr_focalY;
+    bool m_has_attr_focalY;
+
+    double m_attr_radius;
+    bool m_has_attr_radius;
+
+    double m_attr_angle;
+    bool m_has_attr_angle;
+
+    QString m_attr_type;
+    bool m_has_attr_type;
+
+    QString m_attr_spread;
+    bool m_has_attr_spread;
+
+    QString m_attr_coordinateMode;
+    bool m_has_attr_coordinateMode;
+
+    // child element data
+    uint m_children;
+    QList<DomGradientStop*> m_gradientStop;
+    enum Child {
+        GradientStop = 1
+    };
+
+    DomGradient(const DomGradient &other);
+    void operator = (const DomGradient&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomBrush {
+public:
+    DomBrush();
+    ~DomBrush();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeBrushStyle() const { return m_has_attr_brushStyle; }
+    inline QString attributeBrushStyle() const { return m_attr_brushStyle; }
+    inline void setAttributeBrushStyle(const QString& a) { m_attr_brushStyle = a; m_has_attr_brushStyle = true; }
+    inline void clearAttributeBrushStyle() { m_has_attr_brushStyle = false; }
+
+    // child element accessors
+    enum Kind { Unknown = 0, Color, Texture, Gradient };
+    inline Kind kind() const { return m_kind; }
+
+    inline DomColor* elementColor() const { return m_color; }
+    DomColor* takeElementColor();
+    void setElementColor(DomColor* a);
+
+    inline DomProperty* elementTexture() const { return m_texture; }
+    DomProperty* takeElementTexture();
+    void setElementTexture(DomProperty* a);
+
+    inline DomGradient* elementGradient() const { return m_gradient; }
+    DomGradient* takeElementGradient();
+    void setElementGradient(DomGradient* a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_brushStyle;
+    bool m_has_attr_brushStyle;
+
+    // child element data
+    Kind m_kind;
+    DomColor* m_color;
+    DomProperty* m_texture;
+    DomGradient* m_gradient;
+
+    DomBrush(const DomBrush &other);
+    void operator = (const DomBrush&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomColorRole {
+public:
+    DomColorRole();
+    ~DomColorRole();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeRole() const { return m_has_attr_role; }
+    inline QString attributeRole() const { return m_attr_role; }
+    inline void setAttributeRole(const QString& a) { m_attr_role = a; m_has_attr_role = true; }
+    inline void clearAttributeRole() { m_has_attr_role = false; }
+
+    // child element accessors
+    inline DomBrush* elementBrush() const { return m_brush; }
+    DomBrush* takeElementBrush();
+    void setElementBrush(DomBrush* a);
+    inline bool hasElementBrush() const { return m_children & Brush; }
+    void clearElementBrush();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_role;
+    bool m_has_attr_role;
+
+    // child element data
+    uint m_children;
+    DomBrush* m_brush;
+    enum Child {
+        Brush = 1
+    };
+
+    DomColorRole(const DomColorRole &other);
+    void operator = (const DomColorRole&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomColorGroup {
+public:
+    DomColorGroup();
+    ~DomColorGroup();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomColorRole*> elementColorRole() const { return m_colorRole; }
+    void setElementColorRole(const QList<DomColorRole*>& a);
+
+    inline QList<DomColor*> elementColor() const { return m_color; }
+    void setElementColor(const QList<DomColor*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomColorRole*> m_colorRole;
+    QList<DomColor*> m_color;
+    enum Child {
+        ColorRole = 1,
+        Color = 2
+    };
+
+    DomColorGroup(const DomColorGroup &other);
+    void operator = (const DomColorGroup&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomPalette {
+public:
+    DomPalette();
+    ~DomPalette();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline DomColorGroup* elementActive() const { return m_active; }
+    DomColorGroup* takeElementActive();
+    void setElementActive(DomColorGroup* a);
+    inline bool hasElementActive() const { return m_children & Active; }
+    void clearElementActive();
+
+    inline DomColorGroup* elementInactive() const { return m_inactive; }
+    DomColorGroup* takeElementInactive();
+    void setElementInactive(DomColorGroup* a);
+    inline bool hasElementInactive() const { return m_children & Inactive; }
+    void clearElementInactive();
+
+    inline DomColorGroup* elementDisabled() const { return m_disabled; }
+    DomColorGroup* takeElementDisabled();
+    void setElementDisabled(DomColorGroup* a);
+    inline bool hasElementDisabled() const { return m_children & Disabled; }
+    void clearElementDisabled();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    DomColorGroup* m_active;
+    DomColorGroup* m_inactive;
+    DomColorGroup* m_disabled;
+    enum Child {
+        Active = 1,
+        Inactive = 2,
+        Disabled = 4
+    };
+
+    DomPalette(const DomPalette &other);
+    void operator = (const DomPalette&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomFont {
+public:
+    DomFont();
+    ~DomFont();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QString elementFamily() const { return m_family; }
+    void setElementFamily(const QString& a);
+    inline bool hasElementFamily() const { return m_children & Family; }
+    void clearElementFamily();
+
+    inline int elementPointSize() const { return m_pointSize; }
+    void setElementPointSize(int a);
+    inline bool hasElementPointSize() const { return m_children & PointSize; }
+    void clearElementPointSize();
+
+    inline int elementWeight() const { return m_weight; }
+    void setElementWeight(int a);
+    inline bool hasElementWeight() const { return m_children & Weight; }
+    void clearElementWeight();
+
+    inline bool elementItalic() const { return m_italic; }
+    void setElementItalic(bool a);
+    inline bool hasElementItalic() const { return m_children & Italic; }
+    void clearElementItalic();
+
+    inline bool elementBold() const { return m_bold; }
+    void setElementBold(bool a);
+    inline bool hasElementBold() const { return m_children & Bold; }
+    void clearElementBold();
+
+    inline bool elementUnderline() const { return m_underline; }
+    void setElementUnderline(bool a);
+    inline bool hasElementUnderline() const { return m_children & Underline; }
+    void clearElementUnderline();
+
+    inline bool elementStrikeOut() const { return m_strikeOut; }
+    void setElementStrikeOut(bool a);
+    inline bool hasElementStrikeOut() const { return m_children & StrikeOut; }
+    void clearElementStrikeOut();
+
+    inline bool elementAntialiasing() const { return m_antialiasing; }
+    void setElementAntialiasing(bool a);
+    inline bool hasElementAntialiasing() const { return m_children & Antialiasing; }
+    void clearElementAntialiasing();
+
+    inline QString elementStyleStrategy() const { return m_styleStrategy; }
+    void setElementStyleStrategy(const QString& a);
+    inline bool hasElementStyleStrategy() const { return m_children & StyleStrategy; }
+    void clearElementStyleStrategy();
+
+    inline bool elementKerning() const { return m_kerning; }
+    void setElementKerning(bool a);
+    inline bool hasElementKerning() const { return m_children & Kerning; }
+    void clearElementKerning();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QString m_family;
+    int m_pointSize;
+    int m_weight;
+    bool m_italic;
+    bool m_bold;
+    bool m_underline;
+    bool m_strikeOut;
+    bool m_antialiasing;
+    QString m_styleStrategy;
+    bool m_kerning;
+    enum Child {
+        Family = 1,
+        PointSize = 2,
+        Weight = 4,
+        Italic = 8,
+        Bold = 16,
+        Underline = 32,
+        StrikeOut = 64,
+        Antialiasing = 128,
+        StyleStrategy = 256,
+        Kerning = 512
+    };
+
+    DomFont(const DomFont &other);
+    void operator = (const DomFont&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomPoint {
+public:
+    DomPoint();
+    ~DomPoint();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementX() const { return m_x; }
+    void setElementX(int a);
+    inline bool hasElementX() const { return m_children & X; }
+    void clearElementX();
+
+    inline int elementY() const { return m_y; }
+    void setElementY(int a);
+    inline bool hasElementY() const { return m_children & Y; }
+    void clearElementY();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_x;
+    int m_y;
+    enum Child {
+        X = 1,
+        Y = 2
+    };
+
+    DomPoint(const DomPoint &other);
+    void operator = (const DomPoint&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomRect {
+public:
+    DomRect();
+    ~DomRect();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementX() const { return m_x; }
+    void setElementX(int a);
+    inline bool hasElementX() const { return m_children & X; }
+    void clearElementX();
+
+    inline int elementY() const { return m_y; }
+    void setElementY(int a);
+    inline bool hasElementY() const { return m_children & Y; }
+    void clearElementY();
+
+    inline int elementWidth() const { return m_width; }
+    void setElementWidth(int a);
+    inline bool hasElementWidth() const { return m_children & Width; }
+    void clearElementWidth();
+
+    inline int elementHeight() const { return m_height; }
+    void setElementHeight(int a);
+    inline bool hasElementHeight() const { return m_children & Height; }
+    void clearElementHeight();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_x;
+    int m_y;
+    int m_width;
+    int m_height;
+    enum Child {
+        X = 1,
+        Y = 2,
+        Width = 4,
+        Height = 8
+    };
+
+    DomRect(const DomRect &other);
+    void operator = (const DomRect&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomLocale {
+public:
+    DomLocale();
+    ~DomLocale();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeLanguage() const { return m_has_attr_language; }
+    inline QString attributeLanguage() const { return m_attr_language; }
+    inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; }
+    inline void clearAttributeLanguage() { m_has_attr_language = false; }
+
+    inline bool hasAttributeCountry() const { return m_has_attr_country; }
+    inline QString attributeCountry() const { return m_attr_country; }
+    inline void setAttributeCountry(const QString& a) { m_attr_country = a; m_has_attr_country = true; }
+    inline void clearAttributeCountry() { m_has_attr_country = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_language;
+    bool m_has_attr_language;
+
+    QString m_attr_country;
+    bool m_has_attr_country;
+
+    // child element data
+    uint m_children;
+
+    DomLocale(const DomLocale &other);
+    void operator = (const DomLocale&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSizePolicy {
+public:
+    DomSizePolicy();
+    ~DomSizePolicy();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeHSizeType() const { return m_has_attr_hSizeType; }
+    inline QString attributeHSizeType() const { return m_attr_hSizeType; }
+    inline void setAttributeHSizeType(const QString& a) { m_attr_hSizeType = a; m_has_attr_hSizeType = true; }
+    inline void clearAttributeHSizeType() { m_has_attr_hSizeType = false; }
+
+    inline bool hasAttributeVSizeType() const { return m_has_attr_vSizeType; }
+    inline QString attributeVSizeType() const { return m_attr_vSizeType; }
+    inline void setAttributeVSizeType(const QString& a) { m_attr_vSizeType = a; m_has_attr_vSizeType = true; }
+    inline void clearAttributeVSizeType() { m_has_attr_vSizeType = false; }
+
+    // child element accessors
+    inline int elementHSizeType() const { return m_hSizeType; }
+    void setElementHSizeType(int a);
+    inline bool hasElementHSizeType() const { return m_children & HSizeType; }
+    void clearElementHSizeType();
+
+    inline int elementVSizeType() const { return m_vSizeType; }
+    void setElementVSizeType(int a);
+    inline bool hasElementVSizeType() const { return m_children & VSizeType; }
+    void clearElementVSizeType();
+
+    inline int elementHorStretch() const { return m_horStretch; }
+    void setElementHorStretch(int a);
+    inline bool hasElementHorStretch() const { return m_children & HorStretch; }
+    void clearElementHorStretch();
+
+    inline int elementVerStretch() const { return m_verStretch; }
+    void setElementVerStretch(int a);
+    inline bool hasElementVerStretch() const { return m_children & VerStretch; }
+    void clearElementVerStretch();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_hSizeType;
+    bool m_has_attr_hSizeType;
+
+    QString m_attr_vSizeType;
+    bool m_has_attr_vSizeType;
+
+    // child element data
+    uint m_children;
+    int m_hSizeType;
+    int m_vSizeType;
+    int m_horStretch;
+    int m_verStretch;
+    enum Child {
+        HSizeType = 1,
+        VSizeType = 2,
+        HorStretch = 4,
+        VerStretch = 8
+    };
+
+    DomSizePolicy(const DomSizePolicy &other);
+    void operator = (const DomSizePolicy&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSize {
+public:
+    DomSize();
+    ~DomSize();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementWidth() const { return m_width; }
+    void setElementWidth(int a);
+    inline bool hasElementWidth() const { return m_children & Width; }
+    void clearElementWidth();
+
+    inline int elementHeight() const { return m_height; }
+    void setElementHeight(int a);
+    inline bool hasElementHeight() const { return m_children & Height; }
+    void clearElementHeight();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_width;
+    int m_height;
+    enum Child {
+        Width = 1,
+        Height = 2
+    };
+
+    DomSize(const DomSize &other);
+    void operator = (const DomSize&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomDate {
+public:
+    DomDate();
+    ~DomDate();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementYear() const { return m_year; }
+    void setElementYear(int a);
+    inline bool hasElementYear() const { return m_children & Year; }
+    void clearElementYear();
+
+    inline int elementMonth() const { return m_month; }
+    void setElementMonth(int a);
+    inline bool hasElementMonth() const { return m_children & Month; }
+    void clearElementMonth();
+
+    inline int elementDay() const { return m_day; }
+    void setElementDay(int a);
+    inline bool hasElementDay() const { return m_children & Day; }
+    void clearElementDay();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_year;
+    int m_month;
+    int m_day;
+    enum Child {
+        Year = 1,
+        Month = 2,
+        Day = 4
+    };
+
+    DomDate(const DomDate &other);
+    void operator = (const DomDate&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomTime {
+public:
+    DomTime();
+    ~DomTime();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementHour() const { return m_hour; }
+    void setElementHour(int a);
+    inline bool hasElementHour() const { return m_children & Hour; }
+    void clearElementHour();
+
+    inline int elementMinute() const { return m_minute; }
+    void setElementMinute(int a);
+    inline bool hasElementMinute() const { return m_children & Minute; }
+    void clearElementMinute();
+
+    inline int elementSecond() const { return m_second; }
+    void setElementSecond(int a);
+    inline bool hasElementSecond() const { return m_children & Second; }
+    void clearElementSecond();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_hour;
+    int m_minute;
+    int m_second;
+    enum Child {
+        Hour = 1,
+        Minute = 2,
+        Second = 4
+    };
+
+    DomTime(const DomTime &other);
+    void operator = (const DomTime&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomDateTime {
+public:
+    DomDateTime();
+    ~DomDateTime();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementHour() const { return m_hour; }
+    void setElementHour(int a);
+    inline bool hasElementHour() const { return m_children & Hour; }
+    void clearElementHour();
+
+    inline int elementMinute() const { return m_minute; }
+    void setElementMinute(int a);
+    inline bool hasElementMinute() const { return m_children & Minute; }
+    void clearElementMinute();
+
+    inline int elementSecond() const { return m_second; }
+    void setElementSecond(int a);
+    inline bool hasElementSecond() const { return m_children & Second; }
+    void clearElementSecond();
+
+    inline int elementYear() const { return m_year; }
+    void setElementYear(int a);
+    inline bool hasElementYear() const { return m_children & Year; }
+    void clearElementYear();
+
+    inline int elementMonth() const { return m_month; }
+    void setElementMonth(int a);
+    inline bool hasElementMonth() const { return m_children & Month; }
+    void clearElementMonth();
+
+    inline int elementDay() const { return m_day; }
+    void setElementDay(int a);
+    inline bool hasElementDay() const { return m_children & Day; }
+    void clearElementDay();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_hour;
+    int m_minute;
+    int m_second;
+    int m_year;
+    int m_month;
+    int m_day;
+    enum Child {
+        Hour = 1,
+        Minute = 2,
+        Second = 4,
+        Year = 8,
+        Month = 16,
+        Day = 32
+    };
+
+    DomDateTime(const DomDateTime &other);
+    void operator = (const DomDateTime&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomStringList {
+public:
+    DomStringList();
+    ~DomStringList();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QStringList elementString() const { return m_string; }
+    void setElementString(const QStringList& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QStringList m_string;
+    enum Child {
+        String = 1
+    };
+
+    DomStringList(const DomStringList &other);
+    void operator = (const DomStringList&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomResourcePixmap {
+public:
+    DomResourcePixmap();
+    ~DomResourcePixmap();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeResource() const { return m_has_attr_resource; }
+    inline QString attributeResource() const { return m_attr_resource; }
+    inline void setAttributeResource(const QString& a) { m_attr_resource = a; m_has_attr_resource = true; }
+    inline void clearAttributeResource() { m_has_attr_resource = false; }
+
+    inline bool hasAttributeAlias() const { return m_has_attr_alias; }
+    inline QString attributeAlias() const { return m_attr_alias; }
+    inline void setAttributeAlias(const QString& a) { m_attr_alias = a; m_has_attr_alias = true; }
+    inline void clearAttributeAlias() { m_has_attr_alias = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_resource;
+    bool m_has_attr_resource;
+
+    QString m_attr_alias;
+    bool m_has_attr_alias;
+
+    // child element data
+    uint m_children;
+
+    DomResourcePixmap(const DomResourcePixmap &other);
+    void operator = (const DomResourcePixmap&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomResourceIcon {
+public:
+    DomResourceIcon();
+    ~DomResourceIcon();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeTheme() const { return m_has_attr_theme; }
+    inline QString attributeTheme() const { return m_attr_theme; }
+    inline void setAttributeTheme(const QString& a) { m_attr_theme = a; m_has_attr_theme = true; }
+    inline void clearAttributeTheme() { m_has_attr_theme = false; }
+
+    inline bool hasAttributeResource() const { return m_has_attr_resource; }
+    inline QString attributeResource() const { return m_attr_resource; }
+    inline void setAttributeResource(const QString& a) { m_attr_resource = a; m_has_attr_resource = true; }
+    inline void clearAttributeResource() { m_has_attr_resource = false; }
+
+    // child element accessors
+    inline DomResourcePixmap* elementNormalOff() const { return m_normalOff; }
+    DomResourcePixmap* takeElementNormalOff();
+    void setElementNormalOff(DomResourcePixmap* a);
+    inline bool hasElementNormalOff() const { return m_children & NormalOff; }
+    void clearElementNormalOff();
+
+    inline DomResourcePixmap* elementNormalOn() const { return m_normalOn; }
+    DomResourcePixmap* takeElementNormalOn();
+    void setElementNormalOn(DomResourcePixmap* a);
+    inline bool hasElementNormalOn() const { return m_children & NormalOn; }
+    void clearElementNormalOn();
+
+    inline DomResourcePixmap* elementDisabledOff() const { return m_disabledOff; }
+    DomResourcePixmap* takeElementDisabledOff();
+    void setElementDisabledOff(DomResourcePixmap* a);
+    inline bool hasElementDisabledOff() const { return m_children & DisabledOff; }
+    void clearElementDisabledOff();
+
+    inline DomResourcePixmap* elementDisabledOn() const { return m_disabledOn; }
+    DomResourcePixmap* takeElementDisabledOn();
+    void setElementDisabledOn(DomResourcePixmap* a);
+    inline bool hasElementDisabledOn() const { return m_children & DisabledOn; }
+    void clearElementDisabledOn();
+
+    inline DomResourcePixmap* elementActiveOff() const { return m_activeOff; }
+    DomResourcePixmap* takeElementActiveOff();
+    void setElementActiveOff(DomResourcePixmap* a);
+    inline bool hasElementActiveOff() const { return m_children & ActiveOff; }
+    void clearElementActiveOff();
+
+    inline DomResourcePixmap* elementActiveOn() const { return m_activeOn; }
+    DomResourcePixmap* takeElementActiveOn();
+    void setElementActiveOn(DomResourcePixmap* a);
+    inline bool hasElementActiveOn() const { return m_children & ActiveOn; }
+    void clearElementActiveOn();
+
+    inline DomResourcePixmap* elementSelectedOff() const { return m_selectedOff; }
+    DomResourcePixmap* takeElementSelectedOff();
+    void setElementSelectedOff(DomResourcePixmap* a);
+    inline bool hasElementSelectedOff() const { return m_children & SelectedOff; }
+    void clearElementSelectedOff();
+
+    inline DomResourcePixmap* elementSelectedOn() const { return m_selectedOn; }
+    DomResourcePixmap* takeElementSelectedOn();
+    void setElementSelectedOn(DomResourcePixmap* a);
+    inline bool hasElementSelectedOn() const { return m_children & SelectedOn; }
+    void clearElementSelectedOn();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_theme;
+    bool m_has_attr_theme;
+
+    QString m_attr_resource;
+    bool m_has_attr_resource;
+
+    // child element data
+    uint m_children;
+    DomResourcePixmap* m_normalOff;
+    DomResourcePixmap* m_normalOn;
+    DomResourcePixmap* m_disabledOff;
+    DomResourcePixmap* m_disabledOn;
+    DomResourcePixmap* m_activeOff;
+    DomResourcePixmap* m_activeOn;
+    DomResourcePixmap* m_selectedOff;
+    DomResourcePixmap* m_selectedOn;
+    enum Child {
+        NormalOff = 1,
+        NormalOn = 2,
+        DisabledOff = 4,
+        DisabledOn = 8,
+        ActiveOff = 16,
+        ActiveOn = 32,
+        SelectedOff = 64,
+        SelectedOn = 128
+    };
+
+    DomResourceIcon(const DomResourceIcon &other);
+    void operator = (const DomResourceIcon&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomString {
+public:
+    DomString();
+    ~DomString();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeNotr() const { return m_has_attr_notr; }
+    inline QString attributeNotr() const { return m_attr_notr; }
+    inline void setAttributeNotr(const QString& a) { m_attr_notr = a; m_has_attr_notr = true; }
+    inline void clearAttributeNotr() { m_has_attr_notr = false; }
+
+    inline bool hasAttributeComment() const { return m_has_attr_comment; }
+    inline QString attributeComment() const { return m_attr_comment; }
+    inline void setAttributeComment(const QString& a) { m_attr_comment = a; m_has_attr_comment = true; }
+    inline void clearAttributeComment() { m_has_attr_comment = false; }
+
+    inline bool hasAttributeExtraComment() const { return m_has_attr_extraComment; }
+    inline QString attributeExtraComment() const { return m_attr_extraComment; }
+    inline void setAttributeExtraComment(const QString& a) { m_attr_extraComment = a; m_has_attr_extraComment = true; }
+    inline void clearAttributeExtraComment() { m_has_attr_extraComment = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_notr;
+    bool m_has_attr_notr;
+
+    QString m_attr_comment;
+    bool m_has_attr_comment;
+
+    QString m_attr_extraComment;
+    bool m_has_attr_extraComment;
+
+    // child element data
+    uint m_children;
+
+    DomString(const DomString &other);
+    void operator = (const DomString&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomPointF {
+public:
+    DomPointF();
+    ~DomPointF();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline double elementX() const { return m_x; }
+    void setElementX(double a);
+    inline bool hasElementX() const { return m_children & X; }
+    void clearElementX();
+
+    inline double elementY() const { return m_y; }
+    void setElementY(double a);
+    inline bool hasElementY() const { return m_children & Y; }
+    void clearElementY();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    double m_x;
+    double m_y;
+    enum Child {
+        X = 1,
+        Y = 2
+    };
+
+    DomPointF(const DomPointF &other);
+    void operator = (const DomPointF&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomRectF {
+public:
+    DomRectF();
+    ~DomRectF();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline double elementX() const { return m_x; }
+    void setElementX(double a);
+    inline bool hasElementX() const { return m_children & X; }
+    void clearElementX();
+
+    inline double elementY() const { return m_y; }
+    void setElementY(double a);
+    inline bool hasElementY() const { return m_children & Y; }
+    void clearElementY();
+
+    inline double elementWidth() const { return m_width; }
+    void setElementWidth(double a);
+    inline bool hasElementWidth() const { return m_children & Width; }
+    void clearElementWidth();
+
+    inline double elementHeight() const { return m_height; }
+    void setElementHeight(double a);
+    inline bool hasElementHeight() const { return m_children & Height; }
+    void clearElementHeight();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    double m_x;
+    double m_y;
+    double m_width;
+    double m_height;
+    enum Child {
+        X = 1,
+        Y = 2,
+        Width = 4,
+        Height = 8
+    };
+
+    DomRectF(const DomRectF &other);
+    void operator = (const DomRectF&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSizeF {
+public:
+    DomSizeF();
+    ~DomSizeF();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline double elementWidth() const { return m_width; }
+    void setElementWidth(double a);
+    inline bool hasElementWidth() const { return m_children & Width; }
+    void clearElementWidth();
+
+    inline double elementHeight() const { return m_height; }
+    void setElementHeight(double a);
+    inline bool hasElementHeight() const { return m_children & Height; }
+    void clearElementHeight();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    double m_width;
+    double m_height;
+    enum Child {
+        Width = 1,
+        Height = 2
+    };
+
+    DomSizeF(const DomSizeF &other);
+    void operator = (const DomSizeF&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomChar {
+public:
+    DomChar();
+    ~DomChar();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline int elementUnicode() const { return m_unicode; }
+    void setElementUnicode(int a);
+    inline bool hasElementUnicode() const { return m_children & Unicode; }
+    void clearElementUnicode();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    int m_unicode;
+    enum Child {
+        Unicode = 1
+    };
+
+    DomChar(const DomChar &other);
+    void operator = (const DomChar&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomUrl {
+public:
+    DomUrl();
+    ~DomUrl();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline DomString* elementString() const { return m_string; }
+    DomString* takeElementString();
+    void setElementString(DomString* a);
+    inline bool hasElementString() const { return m_children & String; }
+    void clearElementString();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    DomString* m_string;
+    enum Child {
+        String = 1
+    };
+
+    DomUrl(const DomUrl &other);
+    void operator = (const DomUrl&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomProperty {
+public:
+    DomProperty();
+    ~DomProperty();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    inline bool hasAttributeStdset() const { return m_has_attr_stdset; }
+    inline int attributeStdset() const { return m_attr_stdset; }
+    inline void setAttributeStdset(int a) { m_attr_stdset = a; m_has_attr_stdset = true; }
+    inline void clearAttributeStdset() { m_has_attr_stdset = false; }
+
+    // child element accessors
+    enum Kind { Unknown = 0, Bool, Color, Cstring, Cursor, CursorShape, Enum, Font, IconSet, Pixmap, Palette, Point, Rect, Set, Locale, SizePolicy, Size, String, StringList, Number, Float, Double, Date, Time, DateTime, PointF, RectF, SizeF, LongLong, Char, Url, UInt, ULongLong, Brush };
+    inline Kind kind() const { return m_kind; }
+
+    inline QString elementBool() const { return m_bool; }
+    void setElementBool(const QString& a);
+
+    inline DomColor* elementColor() const { return m_color; }
+    DomColor* takeElementColor();
+    void setElementColor(DomColor* a);
+
+    inline QString elementCstring() const { return m_cstring; }
+    void setElementCstring(const QString& a);
+
+    inline int elementCursor() const { return m_cursor; }
+    void setElementCursor(int a);
+
+    inline QString elementCursorShape() const { return m_cursorShape; }
+    void setElementCursorShape(const QString& a);
+
+    inline QString elementEnum() const { return m_enum; }
+    void setElementEnum(const QString& a);
+
+    inline DomFont* elementFont() const { return m_font; }
+    DomFont* takeElementFont();
+    void setElementFont(DomFont* a);
+
+    inline DomResourceIcon* elementIconSet() const { return m_iconSet; }
+    DomResourceIcon* takeElementIconSet();
+    void setElementIconSet(DomResourceIcon* a);
+
+    inline DomResourcePixmap* elementPixmap() const { return m_pixmap; }
+    DomResourcePixmap* takeElementPixmap();
+    void setElementPixmap(DomResourcePixmap* a);
+
+    inline DomPalette* elementPalette() const { return m_palette; }
+    DomPalette* takeElementPalette();
+    void setElementPalette(DomPalette* a);
+
+    inline DomPoint* elementPoint() const { return m_point; }
+    DomPoint* takeElementPoint();
+    void setElementPoint(DomPoint* a);
+
+    inline DomRect* elementRect() const { return m_rect; }
+    DomRect* takeElementRect();
+    void setElementRect(DomRect* a);
+
+    inline QString elementSet() const { return m_set; }
+    void setElementSet(const QString& a);
+
+    inline DomLocale* elementLocale() const { return m_locale; }
+    DomLocale* takeElementLocale();
+    void setElementLocale(DomLocale* a);
+
+    inline DomSizePolicy* elementSizePolicy() const { return m_sizePolicy; }
+    DomSizePolicy* takeElementSizePolicy();
+    void setElementSizePolicy(DomSizePolicy* a);
+
+    inline DomSize* elementSize() const { return m_size; }
+    DomSize* takeElementSize();
+    void setElementSize(DomSize* a);
+
+    inline DomString* elementString() const { return m_string; }
+    DomString* takeElementString();
+    void setElementString(DomString* a);
+
+    inline DomStringList* elementStringList() const { return m_stringList; }
+    DomStringList* takeElementStringList();
+    void setElementStringList(DomStringList* a);
+
+    inline int elementNumber() const { return m_number; }
+    void setElementNumber(int a);
+
+    inline float elementFloat() const { return m_float; }
+    void setElementFloat(float a);
+
+    inline double elementDouble() const { return m_double; }
+    void setElementDouble(double a);
+
+    inline DomDate* elementDate() const { return m_date; }
+    DomDate* takeElementDate();
+    void setElementDate(DomDate* a);
+
+    inline DomTime* elementTime() const { return m_time; }
+    DomTime* takeElementTime();
+    void setElementTime(DomTime* a);
+
+    inline DomDateTime* elementDateTime() const { return m_dateTime; }
+    DomDateTime* takeElementDateTime();
+    void setElementDateTime(DomDateTime* a);
+
+    inline DomPointF* elementPointF() const { return m_pointF; }
+    DomPointF* takeElementPointF();
+    void setElementPointF(DomPointF* a);
+
+    inline DomRectF* elementRectF() const { return m_rectF; }
+    DomRectF* takeElementRectF();
+    void setElementRectF(DomRectF* a);
+
+    inline DomSizeF* elementSizeF() const { return m_sizeF; }
+    DomSizeF* takeElementSizeF();
+    void setElementSizeF(DomSizeF* a);
+
+    inline qlonglong elementLongLong() const { return m_longLong; }
+    void setElementLongLong(qlonglong a);
+
+    inline DomChar* elementChar() const { return m_char; }
+    DomChar* takeElementChar();
+    void setElementChar(DomChar* a);
+
+    inline DomUrl* elementUrl() const { return m_url; }
+    DomUrl* takeElementUrl();
+    void setElementUrl(DomUrl* a);
+
+    inline uint elementUInt() const { return m_UInt; }
+    void setElementUInt(uint a);
+
+    inline qulonglong elementULongLong() const { return m_uLongLong; }
+    void setElementULongLong(qulonglong a);
+
+    inline DomBrush* elementBrush() const { return m_brush; }
+    DomBrush* takeElementBrush();
+    void setElementBrush(DomBrush* a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    int m_attr_stdset;
+    bool m_has_attr_stdset;
+
+    // child element data
+    Kind m_kind;
+    QString m_bool;
+    DomColor* m_color;
+    QString m_cstring;
+    int m_cursor;
+    QString m_cursorShape;
+    QString m_enum;
+    DomFont* m_font;
+    DomResourceIcon* m_iconSet;
+    DomResourcePixmap* m_pixmap;
+    DomPalette* m_palette;
+    DomPoint* m_point;
+    DomRect* m_rect;
+    QString m_set;
+    DomLocale* m_locale;
+    DomSizePolicy* m_sizePolicy;
+    DomSize* m_size;
+    DomString* m_string;
+    DomStringList* m_stringList;
+    int m_number;
+    float m_float;
+    double m_double;
+    DomDate* m_date;
+    DomTime* m_time;
+    DomDateTime* m_dateTime;
+    DomPointF* m_pointF;
+    DomRectF* m_rectF;
+    DomSizeF* m_sizeF;
+    qlonglong m_longLong;
+    DomChar* m_char;
+    DomUrl* m_url;
+    uint m_UInt;
+    qulonglong m_uLongLong;
+    DomBrush* m_brush;
+
+    DomProperty(const DomProperty &other);
+    void operator = (const DomProperty&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomConnections {
+public:
+    DomConnections();
+    ~DomConnections();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomConnection*> elementConnection() const { return m_connection; }
+    void setElementConnection(const QList<DomConnection*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomConnection*> m_connection;
+    enum Child {
+        Connection = 1
+    };
+
+    DomConnections(const DomConnections &other);
+    void operator = (const DomConnections&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomConnection {
+public:
+    DomConnection();
+    ~DomConnection();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QString elementSender() const { return m_sender; }
+    void setElementSender(const QString& a);
+    inline bool hasElementSender() const { return m_children & Sender; }
+    void clearElementSender();
+
+    inline QString elementSignal() const { return m_signal; }
+    void setElementSignal(const QString& a);
+    inline bool hasElementSignal() const { return m_children & Signal; }
+    void clearElementSignal();
+
+    inline QString elementReceiver() const { return m_receiver; }
+    void setElementReceiver(const QString& a);
+    inline bool hasElementReceiver() const { return m_children & Receiver; }
+    void clearElementReceiver();
+
+    inline QString elementSlot() const { return m_slot; }
+    void setElementSlot(const QString& a);
+    inline bool hasElementSlot() const { return m_children & Slot; }
+    void clearElementSlot();
+
+    inline DomConnectionHints* elementHints() const { return m_hints; }
+    DomConnectionHints* takeElementHints();
+    void setElementHints(DomConnectionHints* a);
+    inline bool hasElementHints() const { return m_children & Hints; }
+    void clearElementHints();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QString m_sender;
+    QString m_signal;
+    QString m_receiver;
+    QString m_slot;
+    DomConnectionHints* m_hints;
+    enum Child {
+        Sender = 1,
+        Signal = 2,
+        Receiver = 4,
+        Slot = 8,
+        Hints = 16
+    };
+
+    DomConnection(const DomConnection &other);
+    void operator = (const DomConnection&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomConnectionHints {
+public:
+    DomConnectionHints();
+    ~DomConnectionHints();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomConnectionHint*> elementHint() const { return m_hint; }
+    void setElementHint(const QList<DomConnectionHint*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomConnectionHint*> m_hint;
+    enum Child {
+        Hint = 1
+    };
+
+    DomConnectionHints(const DomConnectionHints &other);
+    void operator = (const DomConnectionHints&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomConnectionHint {
+public:
+    DomConnectionHint();
+    ~DomConnectionHint();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeType() const { return m_has_attr_type; }
+    inline QString attributeType() const { return m_attr_type; }
+    inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; }
+    inline void clearAttributeType() { m_has_attr_type = false; }
+
+    // child element accessors
+    inline int elementX() const { return m_x; }
+    void setElementX(int a);
+    inline bool hasElementX() const { return m_children & X; }
+    void clearElementX();
+
+    inline int elementY() const { return m_y; }
+    void setElementY(int a);
+    inline bool hasElementY() const { return m_children & Y; }
+    void clearElementY();
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_type;
+    bool m_has_attr_type;
+
+    // child element data
+    uint m_children;
+    int m_x;
+    int m_y;
+    enum Child {
+        X = 1,
+        Y = 2
+    };
+
+    DomConnectionHint(const DomConnectionHint &other);
+    void operator = (const DomConnectionHint&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomScript {
+public:
+    DomScript();
+    ~DomScript();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeSource() const { return m_has_attr_source; }
+    inline QString attributeSource() const { return m_attr_source; }
+    inline void setAttributeSource(const QString& a) { m_attr_source = a; m_has_attr_source = true; }
+    inline void clearAttributeSource() { m_has_attr_source = false; }
+
+    inline bool hasAttributeLanguage() const { return m_has_attr_language; }
+    inline QString attributeLanguage() const { return m_attr_language; }
+    inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; }
+    inline void clearAttributeLanguage() { m_has_attr_language = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_source;
+    bool m_has_attr_source;
+
+    QString m_attr_language;
+    bool m_has_attr_language;
+
+    // child element data
+    uint m_children;
+
+    DomScript(const DomScript &other);
+    void operator = (const DomScript&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomWidgetData {
+public:
+    DomWidgetData();
+    ~DomWidgetData();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomWidgetData(const DomWidgetData &other);
+    void operator = (const DomWidgetData&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomDesignerData {
+public:
+    DomDesignerData();
+    ~DomDesignerData();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomProperty*> elementProperty() const { return m_property; }
+    void setElementProperty(const QList<DomProperty*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomProperty*> m_property;
+    enum Child {
+        Property = 1
+    };
+
+    DomDesignerData(const DomDesignerData &other);
+    void operator = (const DomDesignerData&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomSlots {
+public:
+    DomSlots();
+    ~DomSlots();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QStringList elementSignal() const { return m_signal; }
+    void setElementSignal(const QStringList& a);
+
+    inline QStringList elementSlot() const { return m_slot; }
+    void setElementSlot(const QStringList& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QStringList m_signal;
+    QStringList m_slot;
+    enum Child {
+        Signal = 1,
+        Slot = 2
+    };
+
+    DomSlots(const DomSlots &other);
+    void operator = (const DomSlots&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomPropertySpecifications {
+public:
+    DomPropertySpecifications();
+    ~DomPropertySpecifications();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    // child element accessors
+    inline QList<DomStringPropertySpecification*> elementStringpropertyspecification() const { return m_stringpropertyspecification; }
+    void setElementStringpropertyspecification(const QList<DomStringPropertySpecification*>& a);
+
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    // child element data
+    uint m_children;
+    QList<DomStringPropertySpecification*> m_stringpropertyspecification;
+    enum Child {
+        Stringpropertyspecification = 1
+    };
+
+    DomPropertySpecifications(const DomPropertySpecifications &other);
+    void operator = (const DomPropertySpecifications&other);
+};
+
+class QDESIGNER_UILIB_EXPORT DomStringPropertySpecification {
+public:
+    DomStringPropertySpecification();
+    ~DomStringPropertySpecification();
+
+    void read(QXmlStreamReader &reader);
+    void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const;
+    inline QString text() const { return m_text; }
+    inline void setText(const QString &s) { m_text = s; }
+
+    // attribute accessors
+    inline bool hasAttributeName() const { return m_has_attr_name; }
+    inline QString attributeName() const { return m_attr_name; }
+    inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; }
+    inline void clearAttributeName() { m_has_attr_name = false; }
+
+    inline bool hasAttributeType() const { return m_has_attr_type; }
+    inline QString attributeType() const { return m_attr_type; }
+    inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; }
+    inline void clearAttributeType() { m_has_attr_type = false; }
+
+    inline bool hasAttributeNotr() const { return m_has_attr_notr; }
+    inline QString attributeNotr() const { return m_attr_notr; }
+    inline void setAttributeNotr(const QString& a) { m_attr_notr = a; m_has_attr_notr = true; }
+    inline void clearAttributeNotr() { m_has_attr_notr = false; }
+
+    // child element accessors
+private:
+    QString m_text;
+    void clear(bool clear_all = true);
+
+    // attribute data
+    QString m_attr_name;
+    bool m_has_attr_name;
+
+    QString m_attr_type;
+    bool m_has_attr_type;
+
+    QString m_attr_notr;
+    bool m_has_attr_notr;
+
+    // child element data
+    uint m_children;
+
+    DomStringPropertySpecification(const DomStringPropertySpecification &other);
+    void operator = (const DomStringPropertySpecification&other);
+};
+
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // UI4_H
diff --git a/src/designer/src/lib/uilib/uilib.pri b/src/designer/src/lib/uilib/uilib.pri
new file mode 100644
index 0000000000000000000000000000000000000000..75904c2f66a69d8b54f4b54c123966f2b1416365
--- /dev/null
+++ b/src/designer/src/lib/uilib/uilib.pri
@@ -0,0 +1,34 @@
+
+INCLUDEPATH += $$PWD
+
+DEFINES += QT_DESIGNER
+!contains(QT_CONFIG, script): DEFINES += QT_FORMBUILDER_NO_SCRIPT
+
+QT += gui widgets
+
+# Input
+HEADERS += \
+    $$PWD/ui4_p.h \
+    $$PWD/abstractformbuilder.h \
+    $$PWD/formbuilder.h \
+    $$PWD/container.h \
+    $$PWD/customwidget.h \
+    $$PWD/properties_p.h \
+    $$PWD/formbuilderextra_p.h \
+    $$PWD/resourcebuilder_p.h \
+    $$PWD/textbuilder_p.h
+
+SOURCES += \
+    $$PWD/abstractformbuilder.cpp \
+    $$PWD/formbuilder.cpp \
+    $$PWD/ui4.cpp \
+    $$PWD/properties.cpp \
+    $$PWD/formbuilderextra.cpp \
+    $$PWD/resourcebuilder.cpp \
+    $$PWD/textbuilder.cpp
+
+!contains(DEFINES, QT_FORMBUILDER_NO_SCRIPT) {
+    QT += script
+    HEADERS += $$PWD/formscriptrunner_p.h
+    SOURCES += $$PWD/formscriptrunner.cpp
+}
diff --git a/src/designer/src/lib/uilib/uilib_global.h b/src/designer/src/lib/uilib/uilib_global.h
new file mode 100644
index 0000000000000000000000000000000000000000..b27a9bd3f6673794feea1f4c42eed96f366c6142
--- /dev/null
+++ b/src/designer/src/lib/uilib/uilib_global.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef UILIB_GLOBAL_H
+#define UILIB_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#define QDESIGNER_UILIB_EXTERN Q_DECL_EXPORT
+#define QDESIGNER_UILIB_IMPORT Q_DECL_IMPORT
+
+#ifdef QT_DESIGNER_STATIC
+#  define QDESIGNER_UILIB_EXPORT
+#elif defined(QDESIGNER_UILIB_LIBRARY)
+#  define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_EXTERN
+#else
+#  define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_IMPORT
+#endif
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // UILIB_GLOBAL_H
diff --git a/src/designer/src/lib/uilib/widgets.table b/src/designer/src/lib/uilib/widgets.table
new file mode 100644
index 0000000000000000000000000000000000000000..9b8727849b1159739ab29582511cc412cb0185d3
--- /dev/null
+++ b/src/designer/src/lib/uilib/widgets.table
@@ -0,0 +1,148 @@
+
+#ifndef DECLARE_WIDGET_1
+#  define DECLARE_WIDGET_1(a,b) DECLARE_WIDGET(a,b)
+#endif
+
+// widgets
+#ifndef QT_NO_CHECKBOX
+DECLARE_WIDGET(QCheckBox, "text")
+#endif
+#ifndef QT_NO_COMBOBOX
+DECLARE_WIDGET(QComboBox, "")
+#endif
+#ifndef QT_NO_DATETIMEEDIT
+DECLARE_WIDGET(QDateTimeEdit, "")
+#endif
+#ifndef QT_NO_DATEEDIT
+DECLARE_WIDGET(QDateEdit, "")
+#endif
+#ifndef QT_NO_TIMEEDIT
+DECLARE_WIDGET(QTimeEdit, "")
+#endif
+#ifndef QT_NO_DIAL
+DECLARE_WIDGET(QDial, "")
+#endif
+DECLARE_WIDGET(QDialog, "")
+#ifndef QT_NO_DOCKWIDGET
+DECLARE_WIDGET(QDockWidget, "")
+#endif
+DECLARE_WIDGET(QFrame, "")
+#ifndef QT_NO_GROUPBOX
+DECLARE_WIDGET(QGroupBox, "")
+#endif
+#ifndef QT_NO_SCROLLAREA
+DECLARE_WIDGET(QScrollArea, "")
+#endif
+#ifndef QT_NO_LCDNUMBER
+DECLARE_WIDGET(QLCDNumber, "")
+#endif
+DECLARE_WIDGET(QLabel, "")
+#ifndef QT_NO_LINEEDIT
+DECLARE_WIDGET(QLineEdit, "")
+#endif
+#ifndef QT_NO_LISTVIEW
+DECLARE_WIDGET(QListView, "")
+#endif
+#ifndef QT_NO_LISTWIDGET
+DECLARE_WIDGET(QListWidget, "")
+#endif
+#ifndef QT_NO_MAINWINDOW
+DECLARE_WIDGET(QMainWindow, "")
+#endif
+#ifndef QT_NO_MDIAREA
+DECLARE_WIDGET(QMdiArea, "")
+#endif
+#ifndef QT_NO_MENU
+DECLARE_WIDGET(QMenu, "")
+#endif
+#ifndef QT_NO_MENUBAR
+DECLARE_WIDGET(QMenuBar, "")
+#endif
+#ifndef QT_NO_PROGRESSBAR
+DECLARE_WIDGET(QProgressBar, "")
+#endif
+DECLARE_WIDGET(QPushButton, "text")
+DECLARE_WIDGET(QRadioButton, "text")
+DECLARE_WIDGET(QCommandLinkButton, "text")
+#ifndef QT_NO_SCROLLBAR
+DECLARE_WIDGET(QScrollBar, "")
+#endif
+#ifndef QT_NO_SLIDER
+DECLARE_WIDGET(QSlider, "")
+#endif
+#ifndef QT_NO_SPINBOX
+DECLARE_WIDGET(QSpinBox, "")
+DECLARE_WIDGET(QDoubleSpinBox, "")
+#endif
+#ifndef QT_NO_TABWIDGET
+DECLARE_WIDGET(QTabWidget, "")
+#endif
+#ifndef QT_NO_TABLEVIEW
+DECLARE_WIDGET(QTableView, "")
+#endif
+#ifndef QT_NO_TABLEWIDGET
+DECLARE_WIDGET(QTableWidget, "")
+#endif
+#ifndef QT_NO_TEXTBROWSER
+DECLARE_WIDGET(QTextBrowser, "")
+#endif
+#ifndef QT_NO_TEXTEDIT
+DECLARE_WIDGET(QTextEdit, "")
+DECLARE_WIDGET(QPlainTextEdit, "")
+#endif
+#ifndef QT_NO_TOOLBAR
+DECLARE_WIDGET(QToolBar, "")
+#endif
+#ifndef QT_NO_TOOLBOX
+DECLARE_WIDGET(QToolBox, "")
+#endif
+#ifndef QT_NO_TOOLBUTTON
+DECLARE_WIDGET(QToolButton, "text")
+#endif
+#ifndef QT_NO_TREEVIEW
+DECLARE_WIDGET(QTreeView, "")
+#endif
+#ifndef QT_NO_TREEWIDGET
+DECLARE_WIDGET(QTreeWidget, "")
+#endif
+DECLARE_WIDGET(QWidget, "")
+#ifndef QT_NO_WORKSPACE
+DECLARE_WIDGET(QWorkspace, "")
+#endif
+#ifndef QT_NO_SPLITTER
+DECLARE_WIDGET(QSplitter, "")
+#endif
+#ifndef QT_NO_STACKEDWIDGET
+DECLARE_WIDGET(QStackedWidget, "")
+#endif
+#ifndef QT_NO_STATUSBAR
+DECLARE_WIDGET(QStatusBar, "")
+#endif
+DECLARE_WIDGET(QDialogButtonBox, "")
+#ifndef QT_NO_FONTCOMBOBOX
+DECLARE_WIDGET(QFontComboBox, "")
+#endif
+#ifndef QT_NO_CALENDARWIDGET
+DECLARE_WIDGET(QCalendarWidget, "")
+#endif
+#ifndef QT_NO_COLUMNVIEW
+DECLARE_WIDGET(QColumnView, "")
+#endif
+
+#ifndef QT_NO_WIZARD
+DECLARE_WIDGET(QWizard, "")
+DECLARE_WIDGET(QWizardPage, "")
+#endif
+
+#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+DECLARE_WIDGET_1(QGraphicsView, "")
+#endif
+
+// layouts
+DECLARE_LAYOUT(QGridLayout, "")
+DECLARE_LAYOUT(QHBoxLayout, "")
+DECLARE_LAYOUT(QStackedLayout, "")
+DECLARE_LAYOUT(QVBoxLayout, "")
+#ifndef QT_NO_FORMLAYOUT
+DECLARE_LAYOUT(QFormLayout, "")
+#endif
diff --git a/src/designer/src/src.pro b/src/designer/src/src.pro
index 40da11ffc0b32236e0cd0ff01aadab2e31983475..9802c653db783b7b044e2f0aecf51b73373a2f97 100644
--- a/src/designer/src/src.pro
+++ b/src/designer/src/src.pro
@@ -2,6 +2,7 @@ TEMPLATE = subdirs
 CONFIG += ordered
 
 SUBDIRS = \
+    uitools \
     lib \
     components \
     designer
diff --git a/src/designer/src/uitools/quiloader.cpp b/src/designer/src/uitools/quiloader.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..19d4277aed9feca5333934583e27ccac5b383e72
--- /dev/null
+++ b/src/designer/src/uitools/quiloader.cpp
@@ -0,0 +1,954 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+
+#include "quiloader.h"
+#include "quiloader_p.h"
+#include "customwidget.h"
+
+#include <formbuilder.h>
+#include <formbuilderextra_p.h>
+#include <textbuilder_p.h>
+#include <ui4_p.h>
+
+#include <QtCore/qdebug.h>
+#include <QtWidgets/QAction>
+#include <QtWidgets/QActionGroup>
+#include <QtWidgets/QApplication>
+#include <QtCore/QDir>
+#include <QtCore/QLibraryInfo>
+#include <QtWidgets/QLayout>
+#include <QtWidgets/QWidget>
+#include <QtCore/QMap>
+#include <QtWidgets/QTabWidget>
+#include <QtWidgets/QTreeWidget>
+#include <QtWidgets/QListWidget>
+#include <QtWidgets/QTableWidget>
+#include <QtWidgets/QToolBox>
+#include <QtWidgets/QComboBox>
+#include <QtWidgets/QFontComboBox>
+
+QT_BEGIN_NAMESPACE
+
+typedef QMap<QString, bool> widget_map;
+Q_GLOBAL_STATIC(widget_map, g_widgets)
+
+class QUiLoader;
+class QUiLoaderPrivate;
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+class TranslatingTextBuilder : public QTextBuilder
+{
+public:
+    TranslatingTextBuilder(bool trEnabled, const QByteArray &className) :
+        m_trEnabled(trEnabled), m_className(className) {}
+
+    virtual QVariant loadText(const DomProperty *icon) const;
+
+    virtual QVariant toNativeValue(const QVariant &value) const;
+
+private:
+    bool m_trEnabled;
+    QByteArray m_className;
+};
+
+QVariant TranslatingTextBuilder::loadText(const DomProperty *text) const
+{
+    const DomString *str = text->elementString();
+    if (!str)
+        return QVariant();
+    if (str->hasAttributeNotr()) {
+        const QString notr = str->attributeNotr();
+        if (notr == QLatin1String("true") || notr == QLatin1String("yes"))
+            return QVariant::fromValue(str->text());
+    }
+    QUiTranslatableStringValue strVal;
+    strVal.setValue(str->text().toUtf8());
+    if (str->hasAttributeComment())
+        strVal.setComment(str->attributeComment().toUtf8());
+    return QVariant::fromValue(strVal);
+}
+
+QVariant TranslatingTextBuilder::toNativeValue(const QVariant &value) const
+{
+    if (value.canConvert<QUiTranslatableStringValue>()) {
+        QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(value);
+        if (!m_trEnabled)
+            return QString::fromUtf8(tsv.value().data());
+        return QVariant::fromValue(
+            QApplication::translate(m_className, tsv.value(), tsv.comment(),
+                                    QCoreApplication::UnicodeUTF8));
+    }
+    if (value.canConvert<QString>())
+        return QVariant::fromValue(qvariant_cast<QString>(value));
+    return value;
+}
+
+// This is "exported" to linguist
+const QUiItemRolePair qUiItemRoles[] = {
+    { Qt::DisplayRole, Qt::DisplayPropertyRole },
+#ifndef QT_NO_TOOLTIP
+    { Qt::ToolTipRole, Qt::ToolTipPropertyRole },
+#endif
+#ifndef QT_NO_STATUSTIP
+    { Qt::StatusTipRole, Qt::StatusTipPropertyRole },
+#endif
+#ifndef QT_NO_WHATSTHIS
+    { Qt::WhatsThisRole, Qt::WhatsThisPropertyRole },
+#endif
+    { -1 , -1 }
+};
+
+static void recursiveReTranslate(QTreeWidgetItem *item, const QByteArray &class_name)
+{
+    const QUiItemRolePair *irs = qUiItemRoles;
+
+    int cnt = item->columnCount();
+    for (int i = 0; i < cnt; ++i) {
+        for (unsigned j = 0; irs[j].shadowRole >= 0; j++) {
+            QVariant v = item->data(i, irs[j].shadowRole);
+            if (v.isValid()) {
+                QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v);
+                const QString text = QApplication::translate(class_name,
+                                                             tsv.value(), tsv.comment(),
+                                                             QCoreApplication::UnicodeUTF8);
+                item->setData(i, irs[j].realRole, text);
+            }
+        }
+    }
+
+    cnt = item->childCount();
+    for (int i = 0; i < cnt; ++i)
+        recursiveReTranslate(item->child(i), class_name);
+}
+
+template<typename T>
+static void reTranslateWidgetItem(T *item, const QByteArray &class_name)
+{
+    const QUiItemRolePair *irs = qUiItemRoles;
+
+    for (unsigned j = 0; irs[j].shadowRole >= 0; j++) {
+        QVariant v = item->data(irs[j].shadowRole);
+        if (v.isValid()) {
+            QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v);
+            const QString text = QApplication::translate(class_name,
+                                                         tsv.value(), tsv.comment(),
+                                                         QCoreApplication::UnicodeUTF8);
+            item->setData(irs[j].realRole, text);
+        }
+    }
+}
+
+static void reTranslateTableItem(QTableWidgetItem *item, const QByteArray &class_name)
+{
+    if (item)
+        reTranslateWidgetItem(item, class_name);
+}
+
+#define RETRANSLATE_SUBWIDGET_PROP(mainWidget, setter, propName) \
+    do { \
+        QVariant v = mainWidget->widget(i)->property(propName); \
+        if (v.isValid()) { \
+            QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v); \
+            const QString text = QApplication::translate(m_className, \
+                                                         tsv.value(), tsv.comment(), \
+                                                         QCoreApplication::UnicodeUTF8); \
+            mainWidget->setter(i, text); \
+        } \
+    } while (0)
+
+class TranslationWatcher: public QObject
+{
+    Q_OBJECT
+
+public:
+    TranslationWatcher(QObject *parent, const QByteArray &className):
+        QObject(parent),
+        m_className(className)
+    {
+    }
+
+    virtual bool eventFilter(QObject *o, QEvent *event)
+    {
+        if (event->type() == QEvent::LanguageChange) {
+            foreach (const QByteArray &prop, o->dynamicPropertyNames()) {
+                if (prop.startsWith(PROP_GENERIC_PREFIX)) {
+                    const QByteArray propName = prop.mid(sizeof(PROP_GENERIC_PREFIX) - 1);
+                    const QUiTranslatableStringValue tsv =
+                                qvariant_cast<QUiTranslatableStringValue>(o->property(prop));
+                    const QString text = QApplication::translate(m_className,
+                                                                 tsv.value(), tsv.comment(),
+                                                                 QCoreApplication::UnicodeUTF8);
+                    o->setProperty(propName, text);
+                }
+            }
+            if (0) {
+#ifndef QT_NO_TABWIDGET
+            } else if (QTabWidget *tabw = qobject_cast<QTabWidget*>(o)) {
+                const int cnt = tabw->count();
+                for (int i = 0; i < cnt; ++i) {
+                    RETRANSLATE_SUBWIDGET_PROP(tabw, setTabText, PROP_TABPAGETEXT);
+# ifndef QT_NO_TOOLTIP
+                    RETRANSLATE_SUBWIDGET_PROP(tabw, setTabToolTip, PROP_TABPAGETOOLTIP);
+# endif
+# ifndef QT_NO_WHATSTHIS
+                    RETRANSLATE_SUBWIDGET_PROP(tabw, setTabWhatsThis, PROP_TABPAGEWHATSTHIS);
+# endif
+                }
+#endif
+#ifndef QT_NO_LISTWIDGET
+            } else if (QListWidget *listw = qobject_cast<QListWidget*>(o)) {
+                const int cnt = listw->count();
+                for (int i = 0; i < cnt; ++i)
+                    reTranslateWidgetItem(listw->item(i), m_className);
+#endif
+#ifndef QT_NO_TREEWIDGET
+            } else if (QTreeWidget *treew = qobject_cast<QTreeWidget*>(o)) {
+                if (QTreeWidgetItem *item = treew->headerItem())
+                    recursiveReTranslate(item, m_className);
+                const int cnt = treew->topLevelItemCount();
+                for (int i = 0; i < cnt; ++i) {
+                    QTreeWidgetItem *item = treew->topLevelItem(i);
+                    recursiveReTranslate(item, m_className);
+                }
+#endif
+#ifndef QT_NO_TABLEWIDGET
+            } else if (QTableWidget *tablew = qobject_cast<QTableWidget*>(o)) {
+                const int row_cnt = tablew->rowCount();
+                const int col_cnt = tablew->columnCount();
+                for (int j = 0; j < col_cnt; ++j)
+                    reTranslateTableItem(tablew->horizontalHeaderItem(j), m_className);
+                for (int i = 0; i < row_cnt; ++i) {
+                    reTranslateTableItem(tablew->verticalHeaderItem(i), m_className);
+                    for (int j = 0; j < col_cnt; ++j)
+                        reTranslateTableItem(tablew->item(i, j), m_className);
+                }
+#endif
+#ifndef QT_NO_COMBOBOX
+            } else if (QComboBox *combow = qobject_cast<QComboBox*>(o)) {
+                if (!qobject_cast<QFontComboBox*>(o)) {
+                    const int cnt = combow->count();
+                    for (int i = 0; i < cnt; ++i) {
+                        const QVariant v = combow->itemData(i, Qt::DisplayPropertyRole);
+                        if (v.isValid()) {
+                            QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v);
+                            const QString text = QApplication::translate(m_className,
+                                                                         tsv.value(), tsv.comment(),
+                                                                         QCoreApplication::UnicodeUTF8);
+                            combow->setItemText(i, text);
+                        }
+                    }
+                }
+#endif
+#ifndef QT_NO_TOOLBOX
+            } else if (QToolBox *toolw = qobject_cast<QToolBox*>(o)) {
+                const int cnt = toolw->count();
+                for (int i = 0; i < cnt; ++i) {
+                    RETRANSLATE_SUBWIDGET_PROP(toolw, setItemText, PROP_TOOLITEMTEXT);
+# ifndef QT_NO_TOOLTIP
+                    RETRANSLATE_SUBWIDGET_PROP(toolw, setItemToolTip, PROP_TOOLITEMTOOLTIP);
+# endif
+                }
+#endif
+            }
+        }
+        return false;
+    }
+
+private:
+    QByteArray m_className;
+};
+
+class FormBuilderPrivate: public QFormBuilder
+{
+    friend class QT_PREPEND_NAMESPACE(QUiLoader);
+    friend class QT_PREPEND_NAMESPACE(QUiLoaderPrivate);
+    typedef QFormBuilder ParentClass;
+
+public:
+    QUiLoader *loader;
+
+    bool dynamicTr;
+    bool trEnabled;
+
+    FormBuilderPrivate(): loader(0), dynamicTr(false), trEnabled(true), m_trwatch(0) {}
+
+    QWidget *defaultCreateWidget(const QString &className, QWidget *parent, const QString &name)
+    {
+        return ParentClass::createWidget(className, parent, name);
+    }
+
+    QLayout *defaultCreateLayout(const QString &className, QObject *parent, const QString &name)
+    {
+        return ParentClass::createLayout(className, parent, name);
+    }
+
+    QAction *defaultCreateAction(QObject *parent, const QString &name)
+    {
+        return ParentClass::createAction(parent, name);
+    }
+
+    QActionGroup *defaultCreateActionGroup(QObject *parent, const QString &name)
+    {
+        return ParentClass::createActionGroup(parent, name);
+    }
+
+    virtual QWidget *createWidget(const QString &className, QWidget *parent, const QString &name)
+    {
+        if (QWidget *widget = loader->createWidget(className, parent, name)) {
+            widget->setObjectName(name);
+            return widget;
+        }
+
+        return 0;
+    }
+
+    virtual QLayout *createLayout(const QString &className, QObject *parent, const QString &name)
+    {
+        if (QLayout *layout = loader->createLayout(className, parent, name)) {
+            layout->setObjectName(name);
+            return layout;
+        }
+
+        return 0;
+    }
+
+    virtual QActionGroup *createActionGroup(QObject *parent, const QString &name)
+    {
+        if (QActionGroup *actionGroup = loader->createActionGroup(parent, name)) {
+            actionGroup->setObjectName(name);
+            return actionGroup;
+        }
+
+        return 0;
+    }
+
+    virtual QAction *createAction(QObject *parent, const QString &name)
+    {
+        if (QAction *action = loader->createAction(parent, name)) {
+            action->setObjectName(name);
+            return action;
+        }
+
+        return 0;
+    }
+
+    virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties);
+    virtual QWidget *create(DomUI *ui, QWidget *parentWidget);
+    virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget);
+    virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
+
+private:
+    QByteArray m_class;
+    TranslationWatcher *m_trwatch;
+};
+
+static QString convertTranslatable(const DomProperty *p, const QByteArray &className,
+    QUiTranslatableStringValue *strVal)
+{
+    if (p->kind() != DomProperty::String)
+        return QString();
+    const DomString *dom_str = p->elementString();
+    if (!dom_str)
+        return QString();
+    if (dom_str->hasAttributeNotr()) {
+        const QString notr = dom_str->attributeNotr();
+        if (notr == QLatin1String("yes") || notr == QLatin1String("true"))
+            return QString();
+    }
+    strVal->setValue(dom_str->text().toUtf8());
+    strVal->setComment(dom_str->attributeComment().toUtf8());
+    if (strVal->value().isEmpty() && strVal->comment().isEmpty())
+        return QString();
+    return QApplication::translate(className,
+                                   strVal->value(), strVal->comment(),
+                                   QCoreApplication::UnicodeUTF8);
+}
+
+void FormBuilderPrivate::applyProperties(QObject *o, const QList<DomProperty*> &properties)
+{
+    typedef QList<DomProperty*> DomPropertyList;
+
+    QFormBuilder::applyProperties(o, properties);
+
+    if (!m_trwatch)
+        m_trwatch = new TranslationWatcher(o, m_class);
+
+    if (properties.empty())
+        return;
+
+    // Unlike string item roles, string properties are not loaded via the textBuilder
+    // (as they are "shadowed" by the property sheets in designer). So do the initial
+    // translation here.
+    bool anyTrs = false;
+    foreach (const DomProperty *p, properties) {
+        QUiTranslatableStringValue strVal;
+        const QString text = convertTranslatable(p, m_class, &strVal);
+        if (text.isEmpty())
+            continue;
+        const QByteArray name = p->attributeName().toUtf8();
+        if (dynamicTr) {
+            o->setProperty(PROP_GENERIC_PREFIX + name, QVariant::fromValue(strVal));
+            anyTrs = trEnabled;
+        }
+        o->setProperty(name, text);
+    }
+    if (anyTrs)
+        o->installEventFilter(m_trwatch);
+}
+
+QWidget *FormBuilderPrivate::create(DomUI *ui, QWidget *parentWidget)
+{
+    m_class = ui->elementClass().toUtf8();
+    m_trwatch = 0;
+    setTextBuilder(new TranslatingTextBuilder(trEnabled, m_class));
+    return QFormBuilder::create(ui, parentWidget);
+}
+
+QWidget *FormBuilderPrivate::create(DomWidget *ui_widget, QWidget *parentWidget)
+{
+    QWidget *w = QFormBuilder::create(ui_widget, parentWidget);
+    if (w == 0)
+        return 0;
+
+    if (0) {
+#ifndef QT_NO_TABWIDGET
+    } else if (qobject_cast<QTabWidget*>(w)) {
+#endif
+#ifndef QT_NO_LISTWIDGET
+    } else if (qobject_cast<QListWidget*>(w)) {
+#endif
+#ifndef QT_NO_TREEWIDGET
+    } else if (qobject_cast<QTreeWidget*>(w)) {
+#endif
+#ifndef QT_NO_TABLEWIDGET
+    } else if (qobject_cast<QTableWidget*>(w)) {
+#endif
+#ifndef QT_NO_COMBOBOX
+    } else if (qobject_cast<QComboBox*>(w)) {
+        if (qobject_cast<QFontComboBox*>(w))
+            return w;
+#endif
+#ifndef QT_NO_TOOLBOX
+    } else if (qobject_cast<QToolBox*>(w)) {
+#endif
+    } else {
+        return w;
+    }
+    if (dynamicTr && trEnabled)
+        w->installEventFilter(m_trwatch);
+    return w;
+}
+
+#define TRANSLATE_SUBWIDGET_PROP(mainWidget, attribute, setter, propName) \
+    do { \
+        if (const DomProperty *p##attribute = attributes.value(strings.attribute)) { \
+            QUiTranslatableStringValue strVal; \
+            const QString text = convertTranslatable(p##attribute, m_class, &strVal); \
+            if (!text.isEmpty()) { \
+                if (dynamicTr) \
+                    mainWidget->widget(i)->setProperty(propName, QVariant::fromValue(strVal)); \
+                mainWidget->setter(i, text); \
+            } \
+        } \
+    } while (0)
+
+bool FormBuilderPrivate::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget)
+{
+    if (parentWidget == 0)
+        return true;
+
+    if (!ParentClass::addItem(ui_widget, widget, parentWidget))
+        return false;
+
+    // Check special cases. First: Custom container
+    const QString className = QLatin1String(parentWidget->metaObject()->className());
+    if (!d->customWidgetAddPageMethod(className).isEmpty())
+        return true;
+
+    const QFormBuilderStrings &strings = QFormBuilderStrings::instance();
+
+    if (0) {
+#ifndef QT_NO_TABWIDGET
+    } else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(parentWidget)) {
+        const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute());
+        const int i = tabWidget->count() - 1;
+        TRANSLATE_SUBWIDGET_PROP(tabWidget, titleAttribute, setTabText, PROP_TABPAGETEXT);
+# ifndef QT_NO_TOOLTIP
+        TRANSLATE_SUBWIDGET_PROP(tabWidget, toolTipAttribute, setTabToolTip, PROP_TABPAGETOOLTIP);
+# endif
+# ifndef QT_NO_WHATSTHIS
+        TRANSLATE_SUBWIDGET_PROP(tabWidget, whatsThisAttribute, setTabWhatsThis, PROP_TABPAGEWHATSTHIS);
+# endif
+#endif
+#ifndef QT_NO_TOOLBOX
+    } else if (QToolBox *toolBox = qobject_cast<QToolBox*>(parentWidget)) {
+        const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute());
+        const int i = toolBox->count() - 1;
+        TRANSLATE_SUBWIDGET_PROP(toolBox, labelAttribute, setItemText, PROP_TOOLITEMTEXT);
+# ifndef QT_NO_TOOLTIP
+        TRANSLATE_SUBWIDGET_PROP(toolBox, toolTipAttribute, setItemToolTip, PROP_TOOLITEMTOOLTIP);
+# endif
+#endif
+    }
+
+    return true;
+}
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+class QUiLoaderPrivate
+{
+public:
+#ifdef QFORMINTERNAL_NAMESPACE
+    QFormInternal::FormBuilderPrivate builder;
+#else
+    FormBuilderPrivate builder;
+#endif
+
+    void setupWidgetMap() const;
+};
+
+void QUiLoaderPrivate::setupWidgetMap() const
+{
+    if (!g_widgets()->isEmpty())
+        return;
+
+#define DECLARE_WIDGET(a, b) g_widgets()->insert(QLatin1String(#a), true);
+#define DECLARE_LAYOUT(a, b)
+
+#include "widgets.table"
+
+#undef DECLARE_WIDGET
+#undef DECLARE_WIDGET_1
+#undef DECLARE_LAYOUT
+}
+
+/*!
+    \class QUiLoader
+    \inmodule QtUiTools
+
+    \brief The QUiLoader class enables standalone applications to
+    dynamically create user interfaces at run-time using the
+    information stored in UI files or specified in plugin paths.
+
+    In addition, you can customize or create your own user interface by
+    deriving your own loader class.
+
+    If you have a custom component or an application that embeds \QD, you can
+    also use the QFormBuilder class provided by the QtDesigner module to create
+    user interfaces from UI files.
+
+    The QUiLoader class provides a collection of functions allowing you to
+    create widgets based on the information stored in UI files (created
+    with \QD) or available in the specified plugin paths. The specified plugin
+    paths can be retrieved using the pluginPaths() function. Similarly, the
+    contents of a UI file can be retrieved using the load() function. For
+    example:
+
+    \snippet doc/src/snippets/quiloader/mywidget.cpp 0
+
+    By including the user interface in the form's resources (\c myform.qrc), we
+    ensure that it will be present at run-time:
+
+    \quotefile doc/src/snippets/quiloader/mywidget.qrc
+
+    The availableWidgets() function returns a QStringList with the class names
+    of the widgets available in the specified plugin paths. To create these
+    widgets, simply use the createWidget() function. For example:
+
+    \snippet doc/src/snippets/quiloader/main.cpp 0
+
+    To make a custom widget available to the loader, you can use the
+    addPluginPath() function; to remove all available widgets, you can call
+    the clearPluginPaths() function.
+
+    The createAction(), createActionGroup(), createLayout(), and createWidget()
+    functions are used internally by the QUiLoader class whenever it has to
+    create an action, action group, layout, or widget respectively. For that
+    reason, you can subclass the QUiLoader class and reimplement these
+    functions to intervene the process of constructing a user interface. For
+    example, you might want to have a list of the actions created when loading
+    a form or creating a custom widget.
+
+    For a complete example using the QUiLoader class, see the
+    \l{Calculator Builder Example}.
+
+    \sa QtUiTools, QFormBuilder
+*/
+
+/*!
+    Creates a form loader with the given \a parent.
+*/
+QUiLoader::QUiLoader(QObject *parent)
+    : QObject(parent), d_ptr(new QUiLoaderPrivate)
+{
+    Q_D(QUiLoader);
+
+    d->builder.loader = this;
+
+    QStringList paths;
+    foreach (const QString &path, QApplication::libraryPaths()) {
+        QString libPath = path;
+        libPath  += QDir::separator();
+        libPath  += QLatin1String("designer");
+        paths.append(libPath);
+    }
+
+    d->builder.setPluginPath(paths);
+}
+
+/*!
+    Destroys the loader.
+*/
+QUiLoader::~QUiLoader()
+{
+}
+
+/*!
+    Loads a form from the given \a device and creates a new widget with the
+    given \a parentWidget to hold its contents.
+
+    \sa createWidget(), errorString()
+*/
+QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget)
+{
+    Q_D(QUiLoader);
+    // QXmlStreamReader will report errors on open failure.
+    if (!device->isOpen())
+        device->open(QIODevice::ReadOnly|QIODevice::Text);
+    return d->builder.load(device, parentWidget);
+}
+
+/*!
+    Returns a list naming the paths in which the loader will search when
+    locating custom widget plugins.
+
+    \sa addPluginPath(), clearPluginPaths()
+*/
+QStringList QUiLoader::pluginPaths() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.pluginPaths();
+}
+
+/*!
+    Clears the list of paths in which the loader will search when locating
+    plugins.
+
+    \sa addPluginPath(), pluginPaths()
+*/
+void QUiLoader::clearPluginPaths()
+{
+    Q_D(QUiLoader);
+    d->builder.clearPluginPaths();
+}
+
+/*!
+    Adds the given \a path to the list of paths in which the loader will search
+    when locating plugins.
+
+    \sa pluginPaths(), clearPluginPaths()
+*/
+void QUiLoader::addPluginPath(const QString &path)
+{
+    Q_D(QUiLoader);
+    d->builder.addPluginPath(path);
+}
+
+/*!
+    Creates a new widget with the given \a parent and \a name using the class
+    specified by \a className. You can use this function to create any of the
+    widgets returned by the availableWidgets() function.
+
+    The function is also used internally by the QUiLoader class whenever it
+    creates a widget. Hence, you can subclass QUiLoader and reimplement this
+    function to intervene process of constructing a user interface or widget.
+    However, in your implementation, ensure that you call QUiLoader's version
+    first.
+
+    \sa availableWidgets(), load()
+*/
+QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent, const QString &name)
+{
+    Q_D(QUiLoader);
+    return d->builder.defaultCreateWidget(className, parent, name);
+}
+
+/*!
+    Creates a new layout with the given \a parent and \a name using the class
+    specified by \a className.
+
+    The function is also used internally by the QUiLoader class whenever it
+    creates a widget. Hence, you can subclass QUiLoader and reimplement this
+    function to intervene process of constructing a user interface or widget.
+    However, in your implementation, ensure that you call QUiLoader's version
+    first.
+
+    \sa createWidget(), load()
+*/
+QLayout *QUiLoader::createLayout(const QString &className, QObject *parent, const QString &name)
+{
+    Q_D(QUiLoader);
+    return d->builder.defaultCreateLayout(className, parent, name);
+}
+
+/*!
+    Creates a new action group with the given \a parent and \a name.
+
+    The function is also used internally by the QUiLoader class whenever it
+    creates a widget. Hence, you can subclass QUiLoader and reimplement this
+    function to intervene process of constructing a user interface or widget.
+    However, in your implementation, ensure that you call QUiLoader's version
+    first.
+
+    \sa createAction(), createWidget(), load()
+ */
+QActionGroup *QUiLoader::createActionGroup(QObject *parent, const QString &name)
+{
+    Q_D(QUiLoader);
+    return d->builder.defaultCreateActionGroup(parent, name);
+}
+
+/*!
+    Creates a new action with the given \a parent and \a name.
+
+    The function is also used internally by the QUiLoader class whenever it
+    creates a widget. Hence, you can subclass QUiLoader and reimplement this
+    function to intervene process of constructing a user interface or widget.
+    However, in your implementation, ensure that you call QUiLoader's version
+    first.
+
+    \sa createActionGroup(), createWidget(), load()
+*/
+QAction *QUiLoader::createAction(QObject *parent, const QString &name)
+{
+    Q_D(QUiLoader);
+    return d->builder.defaultCreateAction(parent, name);
+}
+
+/*!
+    Returns a list naming all available widgets that can be built using the
+    createWidget() function, i.e all the widgets specified within the given
+    plugin paths.
+
+    \sa pluginPaths(), createWidget()
+
+*/
+QStringList QUiLoader::availableWidgets() const
+{
+    Q_D(const QUiLoader);
+
+    d->setupWidgetMap();
+    widget_map available = *g_widgets();
+
+    foreach (QDesignerCustomWidgetInterface *plugin, d->builder.customWidgets()) {
+        available.insert(plugin->name(), true);
+    }
+
+    return available.keys();
+}
+
+
+/*!
+    \since 4.5
+    Returns a list naming all available layouts that can be built using the
+    createLayout() function
+
+    \sa createLayout()
+*/
+
+QStringList QUiLoader::availableLayouts() const
+{
+    QStringList rc;
+#define DECLARE_WIDGET(a, b)
+#define DECLARE_LAYOUT(a, b) rc.push_back(QLatin1String(#a));
+
+#include "widgets.table"
+
+#undef DECLARE_WIDGET
+#undef DECLARE_LAYOUT
+    return rc;
+}
+
+/*!
+    Sets the working directory of the loader to \a dir. The loader will look
+    for other resources, such as icons and resource files, in paths relative to
+    this directory.
+
+    \sa workingDirectory()
+*/
+
+void QUiLoader::setWorkingDirectory(const QDir &dir)
+{
+    Q_D(QUiLoader);
+    d->builder.setWorkingDirectory(dir);
+}
+
+/*!
+    Returns the working directory of the loader.
+
+    \sa setWorkingDirectory()
+*/
+
+QDir QUiLoader::workingDirectory() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.workingDirectory();
+}
+
+/*!
+    \internal
+    \since 4.3
+
+    If \a enabled is true, the loader will be able to execute scripts.
+    Otherwise, execution of scripts will be disabled.
+
+    \sa isScriptingEnabled()
+*/
+
+void QUiLoader::setScriptingEnabled(bool enabled)
+{
+    Q_D(QUiLoader);
+    d->builder.setScriptingEnabled(enabled);
+}
+
+/*!
+    \internal
+    \since 4.3
+
+    Returns true if execution of scripts is enabled; returns false otherwise.
+
+    \sa setScriptingEnabled()
+*/
+
+bool QUiLoader::isScriptingEnabled() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.isScriptingEnabled();
+}
+
+/*!
+    \since 4.5
+
+    If \a enabled is true, user interfaces loaded by this loader will
+    automatically retranslate themselves upon receiving a language change
+    event. Otherwise, the user interfaces will not be retranslated.
+
+    \sa isLanguageChangeEnabled()
+*/
+
+void QUiLoader::setLanguageChangeEnabled(bool enabled)
+{
+    Q_D(QUiLoader);
+    d->builder.dynamicTr = enabled;
+}
+
+/*!
+    \since 4.5
+
+    Returns true if dynamic retranslation on language change is enabled;
+    returns false otherwise.
+
+    \sa setLanguageChangeEnabled()
+*/
+
+bool QUiLoader::isLanguageChangeEnabled() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.dynamicTr;
+}
+
+/*!
+    \internal
+    \since 4.5
+
+    If \a enabled is true, user interfaces loaded by this loader will be
+    translated. Otherwise, the user interfaces will not be translated.
+
+    \note This is orthogonal to languageChangeEnabled.
+
+    \sa isLanguageChangeEnabled(), setLanguageChangeEnabled()
+*/
+
+void QUiLoader::setTranslationEnabled(bool enabled)
+{
+    Q_D(QUiLoader);
+    d->builder.trEnabled = enabled;
+}
+
+/*!
+    \internal
+    \since 4.5
+
+    Returns true if translation is enabled; returns false otherwise.
+
+    \sa setTranslationEnabled()
+*/
+
+bool QUiLoader::isTranslationEnabled() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.trEnabled;
+}
+
+/*!
+    Returns a human-readable description of the last error occurred in load().
+
+    \since 5.0
+    \sa load()
+*/
+
+QString QUiLoader::errorString() const
+{
+    Q_D(const QUiLoader);
+    return d->builder.errorString();
+}
+
+QT_END_NAMESPACE
+
+#include "quiloader.moc"
diff --git a/src/designer/src/uitools/quiloader.h b/src/designer/src/uitools/quiloader.h
new file mode 100644
index 0000000000000000000000000000000000000000..4adbb01c0e5134ea4cff90a9971bc75e37b0d4b7
--- /dev/null
+++ b/src/designer/src/uitools/quiloader.h
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef QUILOADER_H
+#define QUILOADER_H
+
+#include <QtCore/QObject>
+#include <QtCore/QScopedPointer>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QWidget;
+class QLayout;
+class QAction;
+class QActionGroup;
+class QString;
+class QIODevice;
+class QDir;
+
+class QUiLoaderPrivate;
+class QUiLoader : public QObject
+{
+    Q_OBJECT
+public:
+    QUiLoader(QObject *parent = 0);
+    virtual ~QUiLoader();
+
+    QStringList pluginPaths() const;
+    void clearPluginPaths();
+    void addPluginPath(const QString &path);
+
+    QWidget *load(QIODevice *device, QWidget *parentWidget = 0);
+    QStringList availableWidgets() const;
+    QStringList availableLayouts() const;
+
+    virtual QWidget *createWidget(const QString &className, QWidget *parent = 0, const QString &name = QString());
+    virtual QLayout *createLayout(const QString &className, QObject *parent = 0, const QString &name = QString());
+    virtual QActionGroup *createActionGroup(QObject *parent = 0, const QString &name = QString());
+    virtual QAction *createAction(QObject *parent = 0, const QString &name = QString());
+
+    void setWorkingDirectory(const QDir &dir);
+    QDir workingDirectory() const;
+
+    void setScriptingEnabled(bool enabled);
+    bool isScriptingEnabled() const;
+
+    void setLanguageChangeEnabled(bool enabled);
+    bool isLanguageChangeEnabled() const;
+
+    void setTranslationEnabled(bool enabled);
+    bool isTranslationEnabled() const;
+
+    QString errorString() const;
+
+private:
+    QScopedPointer<QUiLoaderPrivate> d_ptr;
+    Q_DECLARE_PRIVATE(QUiLoader)
+    Q_DISABLE_COPY(QUiLoader)
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QUILOADER_H
diff --git a/src/designer/src/uitools/quiloader_p.h b/src/designer/src/uitools/quiloader_p.h
new file mode 100644
index 0000000000000000000000000000000000000000..3137e6fc8b8332eacc439b3752116e822215f47d
--- /dev/null
+++ b/src/designer/src/uitools/quiloader_p.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Designer 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$
+**
+****************************************************************************/
+
+#ifndef QUILOADER_P_H
+#define QUILOADER_P_H
+
+//
+//  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.
+//
+
+#include <QtCore/QByteArray>
+#include <QtCore/QMetaType>
+
+// This file is here for use by the form preview in Linguist. If you change anything
+// here or in the code which uses it, remember to adapt Linguist accordingly.
+
+#define PROP_GENERIC_PREFIX "_q_notr_"
+#define PROP_TOOLITEMTEXT "_q_toolItemText_notr"
+#define PROP_TOOLITEMTOOLTIP "_q_toolItemToolTip_notr"
+#define PROP_TABPAGETEXT "_q_tabPageText_notr"
+#define PROP_TABPAGETOOLTIP "_q_tabPageToolTip_notr"
+#define PROP_TABPAGEWHATSTHIS "_q_tabPageWhatsThis_notr"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QUiTranslatableStringValue
+{
+public:
+    QByteArray value() const { return m_value; }
+    void setValue(const QByteArray &value) { m_value = value; }
+    QByteArray comment() const { return m_comment; }
+    void setComment(const QByteArray &comment) { m_comment = comment; }
+
+private:
+    QByteArray m_value;
+    QByteArray m_comment;
+};
+
+struct QUiItemRolePair {
+    int realRole;
+    int shadowRole;
+};
+
+#ifdef QFORMINTERNAL_NAMESPACE
+namespace QFormInternal
+{
+#endif
+
+extern const QUiItemRolePair qUiItemRoles[];
+
+#ifdef QFORMINTERNAL_NAMESPACE
+}
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_DECLARE_METATYPE(QUiTranslatableStringValue)
+
+
+#endif // QUILOADER_P_H
diff --git a/src/designer/src/uitools/uitools.pro b/src/designer/src/uitools/uitools.pro
new file mode 100644
index 0000000000000000000000000000000000000000..ca25014c0a7e0f6fcca8ef0ea64ccbd1c2a40bac
--- /dev/null
+++ b/src/designer/src/uitools/uitools.pro
@@ -0,0 +1,50 @@
+QPRO_PWD   = $$PWD
+TEMPLATE = lib
+TARGET = $$qtLibraryTarget(QtUiTools)
+QT = core
+
+CONFIG += qt staticlib module
+MODULE = uitools
+MODULE_PRI = ../modules/qt_uitools.pri 
+
+DESTDIR = $$QMAKE_LIBDIR_QT
+
+symbian {
+    TARGET.UID3 = 0x2001E628
+    load(armcc_warnings)
+}
+
+win32|mac:!macx-xcode:CONFIG += debug_and_release build_all
+
+DEFINES += QFORMINTERNAL_NAMESPACE QT_DESIGNER_STATIC QT_FORMBUILDER_NO_SCRIPT
+isEmpty(QT_MAJOR_VERSION) {
+   VERSION=4.3.0
+} else {
+   VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
+}
+load(qt_targets)
+QMAKE_TARGET_PRODUCT = UiLoader
+QMAKE_TARGET_DESCRIPTION = QUiLoader
+
+include(../lib/uilib/uilib.pri)
+
+HEADERS += quiloader.h
+SOURCES += quiloader.cpp
+
+include($$QT_BUILD_TREE/include/QtUiTools/headers.pri, "", true)
+quitools_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES
+quitools_headers.path = $$[QT_INSTALL_HEADERS]/QtUiTools
+quitools_private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES
+quitools_private_headers.path = $$[QT_INSTALL_HEADERS]/QtUiTools/$$QT.uitools.VERSION/QtUiTools/private
+INSTALLS        += quitools_headers quitools_private_headers
+
+target.path=$$[QT_INSTALL_LIBS]
+INSTALLS        += target
+
+unix|win32-g++* {
+   CONFIG     += create_pc
+   QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS]
+   QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS]/$$TARGET
+   QMAKE_PKGCONFIG_CFLAGS = -I$$[QT_INSTALL_HEADERS]
+   QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+}
diff --git a/sync.profile b/sync.profile
index e748d5ecc2395803b6078488fa0b7ff5eceff700..8873defdda0e68d5184695c1cb78f4a9b583fec1 100644
--- a/sync.profile
+++ b/sync.profile
@@ -1,6 +1,7 @@
 %modules = ( # path to module name map
     "QtCLucene" => "$basedir/src/assistant/clucene",
     "QtHelp" => "$basedir/src/assistant/help",
+    "QtUiTools" => "$basedir/src/designer/src/uitools",
     "QtDesigner" => "$basedir/src/designer/src/lib",
 );
 %moduleheaders = ( # restrict the module headers to those found in relative path
@@ -8,6 +9,7 @@
 %classnames = (
     "qtcluceneversion.h" => "QtCLuceneVersion",
     "qthelpversion.h" => "QtHelpVersion",
+    "qtuitoolsversion.h" => "QtUiToolsVersion",
     "qtdesignerversion.h" => "QtDesigner",
 );
 %mastercontent = (
@@ -24,6 +26,7 @@
 %modulepris = (
     "QtCLucene" => "$basedir/modules/qt_clucene.pri",
     "QtHelp" => "$basedir/modules/qt_help.pri",
+    "QtUiTools" => "$basedir/modules/qt_uitools.pri",
     "QtDesigner" => "$basedir/modules/qt_designer.pri",
 );
 %dependencies = (
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 49c179f57c9f76ab41f7e44cf2cb256b846d9829..78cfd74e07c3d8f37d2bd797649057edb7ee2406 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -6,5 +6,5 @@ SUBDIRS=\
     qhelpindexmodel \
     qhelpprojectdata \
 
-SUBDIRS += linguist
+SUBDIRS += linguist uitools
 !cross_compile:SUBDIRS += host.pro
diff --git a/tests/auto/uiloader/.gitignore b/tests/auto/uiloader/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a4b4e8f0211fc1b363610e67709f3c657942d714
--- /dev/null
+++ b/tests/auto/uiloader/.gitignore
@@ -0,0 +1 @@
+tst_uiloader
diff --git a/tests/auto/uiloader/README.TXT b/tests/auto/uiloader/README.TXT
new file mode 100644
index 0000000000000000000000000000000000000000..cbbf0ff774f828abca82518b813f97dfa828b1d7
--- /dev/null
+++ b/tests/auto/uiloader/README.TXT
@@ -0,0 +1,93 @@
+   -------------------------------------------------------------------------
+         TESTING WIDGETS DEFINED IN *.UI FILES (SCREENSHOT COMPARISON)
+   -------------------------------------------------------------------------
+              This test is based on dev/qt/tests/auto/atwrapper/
+
+
+HOW TO RUN THE TESTS
+
+    Compile the necessary programs:
+        qmake
+        make
+
+    Now there should be an executable 'uiloader'.
+    Run the tests:
+        ./uiloader
+
+
+
+CONFIGURATION
+
+    The tests can be executed on different machines. For every machine there
+    is a config file <hostname>.ini.
+
+    If this file is not available the tests won't be run on the machine.
+
+        Example kayak.ini:
+
+            [General]
+            ftpBaseDir=/arthurtest
+            ftpHost=wartburg
+            ftpPass=anonymouspass
+            ftpUser=anonymous
+            output=testresults
+
+            [engines]
+            1\engine=uic
+            size=1
+
+    Don't modify the [engines] section. Later it will be used for styles.  The
+    only thing you might want to modify is the ftpHost value. At the moment
+    wartburg is just a server on which we test the tests.
+
+    The actual test server is: kramer.troll.no
+
+
+
+HOW IT WORKS
+
+    There are 3 important folders:
+
+        tst_uiloader/       Actual program executing the tests.
+        tst_screenshot/     Program to generate one *.png file out of *.ui
+        baseline/           This is a dir with *.ui files.
+        
+    ./uiloader (compiled from tst_uiloader) will use the tst_screenshot program
+    and the files in baseline/.
+
+    In order to generate screenshots the *.ui files in baseline/ will be used.
+    Therefore a folder testresults/ (specified in the config) will be
+    created/used.
+
+    Structure of testresults/:
+        
+        |-- testresults
+        |   `-- i686 Linux g++-4 full-config    That's buildKey().
+        |       `-- 4.5.0                       Used Qt version.
+        |           |-- uic                     Here are the generated images.
+        |           |-- uic.baseline            Baseline downloaded from server.
+        |           |-- uic.diff                Diff Images of failed tests.
+        |           `-- uic.failed              Generated images of failed tests.
+
+    If there is no baseline at the server the results in uic/ will be uploaded
+    as a new baseline (first run for your machine). So to create a new baseline
+    on the server you just need to remove your folders there.
+
+    On the server side there is a dir /arthurtest with following structure
+    (it will be created if it's not there):
+
+        |-- arthurtest
+        |   `-- <your machines hostname>
+        |       `-- <buildKey()>
+        |           `-- <qt version>
+        |               |-- uic.baseline    Baseline.
+        |               |-- uic.diff        Here the local diffs will be uploaded.
+        |               `-- uic.failed      Here the local failed files will be uploaded.
+
+    After a test run the files in local uic.diff/ and uic.failed/ will be
+    uploaded to the server.
+
+    For every run the uic.diff/ and uic.failed/ on the local and remote machine
+    will be cleared in order to place new files there. On the local side uic/
+    gets cleared, too.
+
diff --git a/tests/auto/uiloader/WTC0090dca226c8.ini b/tests/auto/uiloader/WTC0090dca226c8.ini
new file mode 100644
index 0000000000000000000000000000000000000000..5cf6c4fee7c6b92d4a0d22b7fb3e9d1075686371
--- /dev/null
+++ b/tests/auto/uiloader/WTC0090dca226c8.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer-nokia.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui
new file mode 100644
index 0000000000000000000000000000000000000000..18d31ab9155378364a43641f68cc048e87fdf7f6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui
@@ -0,0 +1,71 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox" >
+   <property name="geometry" >
+    <rect>
+     <x>30</x>
+     <y>240</y>
+     <width>341</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation" >
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons" >
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+  </widget>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui
new file mode 100644
index 0000000000000000000000000000000000000000..703d594f4f8701900a71a88f0c44955ec1bf4441
--- /dev/null
+++ b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui
@@ -0,0 +1,71 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox" >
+   <property name="geometry" >
+    <rect>
+     <x>290</x>
+     <y>20</y>
+     <width>81</width>
+     <height>241</height>
+    </rect>
+   </property>
+   <property name="orientation" >
+    <enum>Qt::Vertical</enum>
+   </property>
+   <property name="standardButtons" >
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+  </widget>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui b/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1be629818c2fcfb6127b2ffddda524d91f7647e7
--- /dev/null
+++ b/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui
@@ -0,0 +1,18 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/Main_Window.ui b/tests/auto/uiloader/baseline/Main_Window.ui
new file mode 100644
index 0000000000000000000000000000000000000000..e324db8292cb77b96e7b8b077e18a5df5a31de55
--- /dev/null
+++ b/tests/auto/uiloader/baseline/Main_Window.ui
@@ -0,0 +1,27 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow" >
+  <property name="objectName" >
+   <string notr="true" >MainWindow</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>MainWindow</string>
+  </property>
+  <widget class="QMenuBar" name="menubar" />
+  <widget class="QWidget" name="centralwidget" />
+  <widget class="QStatusBar" name="statusbar" />
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/Widget.ui b/tests/auto/uiloader/baseline/Widget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..9f6f60006c23c56253ae1d7e03130545cbd1dcab
--- /dev/null
+++ b/tests/auto/uiloader/baseline/Widget.ui
@@ -0,0 +1,41 @@
+<ui version="4.0" >
+ <class>Form</class>
+ <widget class="QWidget" name="Form" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QLabel" name="Alabel" >
+     <property name="text" >
+      <string>A label</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>A Group Box</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QPushButton" name="pushButton" >
+     <property name="text" >
+      <string>PushButton</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/addlinkdialog.ui b/tests/auto/uiloader/baseline/addlinkdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3171159f97d65984e4e23c5abf506fd74b41cad0
--- /dev/null
+++ b/tests/auto/uiloader/baseline/addlinkdialog.ui
@@ -0,0 +1,112 @@
+<ui version="4.0" >
+ <class>AddLinkDialog</class>
+ <widget class="QDialog" name="AddLinkDialog" >
+  <property name="windowTitle" >
+   <string>Insert Link</string>
+  </property>
+  <property name="sizeGripEnabled" >
+   <bool>false</bool>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <layout class="QFormLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>Title:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="titleInput" >
+       <property name="minimumSize" >
+        <size>
+         <width>337</width>
+         <height>0</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>URL:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QLineEdit" name="urlInput" />
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AddLinkDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AddLinkDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/addtorrentform.ui b/tests/auto/uiloader/baseline/addtorrentform.ui
new file mode 100644
index 0000000000000000000000000000000000000000..950bb67119192a0d4c46267d7c1453b07d8b0926
--- /dev/null
+++ b/tests/auto/uiloader/baseline/addtorrentform.ui
@@ -0,0 +1,266 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>AddTorrentFile</class>
+ <widget class="QDialog" name="AddTorrentFile" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>464</width>
+    <height>385</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Add a torrent</string>
+  </property>
+  <property name="sizeGripEnabled" >
+   <bool>false</bool>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Select a torrent source</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="6" column="0" >
+       <widget class="QLabel" name="label_4" >
+        <property name="text" >
+         <string>Destination:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" colspan="2" >
+       <widget class="QLineEdit" name="torrentFile" />
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="label_2" >
+        <property name="text" >
+         <string>Tracker URL:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3" >
+       <widget class="QPushButton" name="browseTorrents" >
+        <property name="text" >
+         <string>Browse</string>
+        </property>
+        <property name="default" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0" >
+       <widget class="QLabel" name="label_5" >
+        <property name="text" >
+         <string>File(s):</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" >
+       <widget class="QLabel" name="label_3" >
+        <property name="text" >
+         <string>Size:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="label_6" >
+        <property name="text" >
+         <string>Creator:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1" colspan="3" >
+       <widget class="QTextEdit" name="torrentContents" >
+        <property name="focusPolicy" >
+         <enum>Qt::NoFocus</enum>
+        </property>
+        <property name="tabChangesFocus" >
+         <bool>true</bool>
+        </property>
+        <property name="lineWrapMode" >
+         <enum>QTextEdit::NoWrap</enum>
+        </property>
+        <property name="readOnly" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="1" colspan="2" >
+       <widget class="QLineEdit" name="destinationFolder" >
+        <property name="focusPolicy" >
+         <enum>Qt::StrongFocus</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" colspan="3" >
+       <widget class="QLabel" name="announceUrl" >
+        <property name="text" >
+         <string>&lt;none></string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Torrent file:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="3" >
+       <widget class="QPushButton" name="browseDestination" >
+        <property name="text" >
+         <string>Browse</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="label_7" >
+        <property name="text" >
+         <string>Comment:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" colspan="3" >
+       <widget class="QLabel" name="commentLabel" >
+        <property name="text" >
+         <string>&lt;none></string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" colspan="3" >
+       <widget class="QLabel" name="creatorLabel" >
+        <property name="text" >
+         <string>&lt;none></string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1" colspan="3" >
+       <widget class="QLabel" name="sizeLabel" >
+        <property name="text" >
+         <string>0</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+     <widget class="QWidget" name="widget" >
+      <property name="geometry" >
+       <rect>
+        <x>10</x>
+        <y>40</y>
+        <width>364</width>
+        <height>33</height>
+       </rect>
+      </property>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>131</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="text" >
+        <string>&amp;OK</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>&amp;Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>torrentFile</tabstop>
+  <tabstop>browseTorrents</tabstop>
+  <tabstop>torrentContents</tabstop>
+  <tabstop>destinationFolder</tabstop>
+  <tabstop>browseDestination</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>AddTorrentFile</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>278</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>96</x>
+     <y>254</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>AddTorrentFile</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>369</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>179</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/authenticationdialog.ui b/tests/auto/uiloader/baseline/authenticationdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..82d908cffb645528db4d2628ab77bedc03c6f4cf
--- /dev/null
+++ b/tests/auto/uiloader/baseline/authenticationdialog.ui
@@ -0,0 +1,129 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>389</width>
+    <height>243</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Http authentication required</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" colspan="2" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>You need to supply a Username and a Password to access this site</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="text" >
+      <string>Username:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QLineEdit" name="userEdit" />
+   </item>
+   <item row="3" column="0" >
+    <widget class="QLabel" name="label_3" >
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QLineEdit" name="passwordEdit" />
+   </item>
+   <item row="5" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label_4" >
+     <property name="text" >
+      <string>Site:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLabel" name="siteDescription" >
+     <property name="font" >
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
+     <property name="text" >
+      <string>%1 at %2</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/backside.ui b/tests/auto/uiloader/baseline/backside.ui
new file mode 100644
index 0000000000000000000000000000000000000000..afa488c6f4d79b63c94f257faa1261a616eb7833
--- /dev/null
+++ b/tests/auto/uiloader/baseline/backside.ui
@@ -0,0 +1,208 @@
+<ui version="4.0" >
+ <class>BackSide</class>
+ <widget class="QWidget" name="BackSide" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>378</width>
+    <height>385</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>BackSide</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2" >
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Settings</string>
+     </property>
+     <property name="flat" >
+      <bool>true</bool>
+     </property>
+     <property name="checkable" >
+      <bool>true</bool>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Title:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QLineEdit" name="hostName" >
+        <property name="text" >
+         <string>Pad Navigator Example</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="label_2" >
+        <property name="text" >
+         <string>Modified:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="label_3" >
+        <property name="text" >
+         <string>Extent</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
+        <item>
+         <widget class="QSlider" name="horizontalSlider" >
+          <property name="value" >
+           <number>42</number>
+          </property>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QSpinBox" name="spinBox" >
+          <property name="value" >
+           <number>42</number>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QDateTimeEdit" name="dateTimeEdit" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2" >
+     <property name="title" >
+      <string>Other input</string>
+     </property>
+     <property name="flat" >
+      <bool>true</bool>
+     </property>
+     <property name="checkable" >
+      <bool>true</bool>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2" >
+      <item>
+       <widget class="QTreeWidget" name="treeWidget" >
+        <column>
+         <property name="text" >
+          <string>Widgets On Graphics View</string>
+         </property>
+        </column>
+        <item>
+         <property name="text" >
+          <string>QGraphicsProxyWidget</string>
+         </property>
+         <item>
+          <property name="text" >
+           <string>QGraphicsWidget</string>
+          </property>
+          <item>
+           <property name="text" >
+            <string>QObject</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>QGraphicsItem</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>QGraphicsLayoutItem</string>
+           </property>
+          </item>
+         </item>
+        </item>
+        <item>
+         <property name="text" >
+          <string>QGraphicsGridLayout</string>
+         </property>
+         <item>
+          <property name="text" >
+           <string>QGraphicsLayout</string>
+          </property>
+          <item>
+           <property name="text" >
+            <string>QGraphicsLayoutItem</string>
+           </property>
+          </item>
+         </item>
+        </item>
+        <item>
+         <property name="text" >
+          <string>QGraphicsLinearLayout</string>
+         </property>
+         <item>
+          <property name="text" >
+           <string>QGraphicsLayout</string>
+          </property>
+          <item>
+           <property name="text" >
+            <string>QGraphicsLayoutItem</string>
+           </property>
+          </item>
+         </item>
+        </item>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>groupBox</tabstop>
+  <tabstop>hostName</tabstop>
+  <tabstop>dateTimeEdit</tabstop>
+  <tabstop>horizontalSlider</tabstop>
+  <tabstop>spinBox</tabstop>
+  <tabstop>groupBox_2</tabstop>
+  <tabstop>treeWidget</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>horizontalSlider</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>spinBox</receiver>
+   <slot>setValue(int)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>184</x>
+     <y>125</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>275</x>
+     <y>127</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>spinBox</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>horizontalSlider</receiver>
+   <slot>setValue(int)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>272</x>
+     <y>114</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>190</x>
+     <y>126</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/batchtranslation.ui b/tests/auto/uiloader/baseline/batchtranslation.ui
new file mode 100644
index 0000000000000000000000000000000000000000..6cb2943606763a68e1fcf0fb2e7cfe451479efb6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/batchtranslation.ui
@@ -0,0 +1,236 @@
+<ui version="4.0" >
+ <author></author>
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>databaseTranslationDialog</class>
+ <widget class="QDialog" name="databaseTranslationDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>425</width>
+    <height>370</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt Linguist - Batch Translation</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>4</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Options</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QCheckBox" name="ckOnlyUntranslated" >
+        <property name="text" >
+         <string>Only translate entries with no translation</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="ckMarkFinished" >
+        <property name="text" >
+         <string>Set translated entries to finished</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>1</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Phrase book preference</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <widget class="QListView" name="phrasebookList" >
+          <property name="uniformItemSizes" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" >
+          <property name="margin" >
+           <number>0</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item>
+           <widget class="QPushButton" name="moveUpButton" >
+            <property name="text" >
+             <string>Move up</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="moveDownButton" >
+            <property name="text" >
+             <string>Move down</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" >
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>The batch translator will search through the selected phrasebooks in the order given above.</string>
+        </property>
+        <property name="wordWrap" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="runButton" >
+       <property name="text" >
+        <string>&amp;Run</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>&amp;Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/bookmarkdialog.ui b/tests/auto/uiloader/baseline/bookmarkdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..2d6470c54c9cd44a536006dd7f542b30cd4b01a3
--- /dev/null
+++ b/tests/auto/uiloader/baseline/bookmarkdialog.ui
@@ -0,0 +1,161 @@
+<ui version="4.0" >
+ <class>BookmarkDialog</class>
+ <widget class="QDialog" name="BookmarkDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>450</width>
+    <height>135</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Add Bookmark</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_3" >
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout" >
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2" >
+       <item>
+        <widget class="QLabel" name="label" >
+         <property name="text" >
+          <string>Bookmark:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_2" >
+         <property name="text" >
+          <string>Add in Folder:</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout" >
+       <item>
+        <widget class="QLineEdit" name="bookmarkEdit" />
+       </item>
+       <item>
+        <widget class="QComboBox" name="bookmarkFolders" />
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_3" >
+     <item>
+      <widget class="QToolButton" name="toolButton" >
+       <property name="minimumSize" >
+        <size>
+         <width>25</width>
+         <height>20</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string>+</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="Line" name="line" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="BookmarkWidget" name="bookmarkWidget" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Ignored" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <column>
+      <property name="text" >
+       <string>1</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_4" >
+     <item>
+      <widget class="QPushButton" name="newFolderButton" >
+       <property name="text" >
+        <string>New Folder</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>BookmarkWidget</class>
+   <extends>QTreeWidget</extends>
+   <header>bookmarkwidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>BookmarkDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>BookmarkDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/bookwindow.ui b/tests/auto/uiloader/baseline/bookwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..659d3245648f97686a6db7cd29b2c1cadf8f2dd4
--- /dev/null
+++ b/tests/auto/uiloader/baseline/bookwindow.ui
@@ -0,0 +1,149 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>BookWindow</class>
+ <widget class="QMainWindow" name="BookWindow" >
+ <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>601</width>
+    <height>420</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Books</string>
+  </property>
+  <widget class="QWidget" name="centralWidget" >
+   <layout class="QVBoxLayout" >
+    <property name="margin" >
+     <number>9</number>
+    </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Books</string>
+      </property>
+      <layout class="QVBoxLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QTableView" name="bookTable" >
+         <property name="selectionBehavior" >
+          <enum>QAbstractItemView::SelectRows</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="groupBox_2" >
+         <property name="title" >
+          <string>Details</string>
+         </property>
+         <layout class="QFormLayout" >
+	   <item row="0" column="0" >
+           <widget class="QLabel" name="label_5" >
+            <property name="text" >
+             <string>&lt;b>Title:&lt;/b></string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QLineEdit" name="titleEdit" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="label_2_2_2_2" >
+            <property name="text" >
+             <string>&lt;b>Author: &lt;/b></string>
+            </property>
+           </widget>
+	    </item>
+	     <item row="1" column="1" >
+           <widget class="QComboBox" name="authorEdit" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>	   
+	  <item row="2" column="0" >
+           <widget class="QLabel" name="label_3" >
+            <property name="text" >
+             <string>&lt;b>Genre:&lt;/b></string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" >
+           <widget class="QComboBox" name="genreEdit" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" >
+           <widget class="QLabel" name="label_4" >
+            <property name="text" >
+             <string>&lt;b>Year:&lt;/b></string>
+            </property>
+           </widget>
+          </item>       
+          <item row="3" column="1" >
+           <widget class="QSpinBox" name="yearEdit" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+            <property name="prefix" >
+             <string/>
+            </property>
+            <property name="maximum" >
+             <number>2100</number>
+            </property>
+            <property name="minimum" >
+             <number>-1000</number>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0" >
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>&lt;b>Rating:&lt;/b></string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1" >
+           <widget class="QSpinBox" name="ratingEdit" >
+            <property name="maximum" >
+             <number>5</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>bookTable</tabstop>
+  <tabstop>titleEdit</tabstop>
+  <tabstop>authorEdit</tabstop>
+  <tabstop>genreEdit</tabstop>
+  <tabstop>yearEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/browserwidget.ui b/tests/auto/uiloader/baseline/browserwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..20946f0ede3fca21fe64b0286d575516897a5c62
--- /dev/null
+++ b/tests/auto/uiloader/baseline/browserwidget.ui
@@ -0,0 +1,199 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>Browser</class>
+ <widget class="QWidget" name="Browser" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>765</width>
+    <height>515</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt SQL Browser</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QSplitter" name="splitter_2" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>7</hsizetype>
+       <vsizetype>7</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="ConnectionWidget" name="connectionWidget" >
+      <property name="sizePolicy" >
+       <sizepolicy>
+        <hsizetype>13</hsizetype>
+        <vsizetype>7</vsizetype>
+        <horstretch>1</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+     </widget>
+     <widget class="QTableView" name="table" >
+      <property name="sizePolicy" >
+       <sizepolicy>
+        <hsizetype>7</hsizetype>
+        <vsizetype>7</vsizetype>
+        <horstretch>2</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="contextMenuPolicy" >
+       <enum>Qt::ActionsContextMenu</enum>
+      </property>
+      <property name="selectionBehavior" >
+       <enum>QAbstractItemView::SelectRows</enum>
+      </property>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>3</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="maximumSize" >
+      <size>
+       <width>16777215</width>
+       <height>180</height>
+      </size>
+     </property>
+     <property name="title" >
+      <string>SQL Query</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QTextEdit" name="sqlEdit" >
+        <property name="sizePolicy" >
+         <sizepolicy>
+          <hsizetype>7</hsizetype>
+          <vsizetype>3</vsizetype>
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize" >
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="baseSize" >
+         <size>
+          <width>0</width>
+          <height>120</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>1</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QPushButton" name="clearButton" >
+          <property name="text" >
+           <string>&amp;Clear</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="submitButton" >
+          <property name="text" >
+           <string>&amp;Submit</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+  <action name="insertRowAction" >
+   <property name="enabled" >
+    <bool>false</bool>
+   </property>
+   <property name="text" >
+    <string>&amp;Insert Row</string>
+   </property>
+   <property name="statusTip" >
+    <string>Inserts a new Row</string>
+   </property>
+  </action>
+  <action name="deleteRowAction" >
+   <property name="enabled" >
+    <bool>false</bool>
+   </property>
+   <property name="text" >
+    <string>&amp;Delete Row</string>
+   </property>
+   <property name="statusTip" >
+    <string>Deletes the current Row</string>
+   </property>
+  </action>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>ConnectionWidget</class>
+   <extends>QTreeView</extends>
+   <header>connectionwidget.h</header>
+   <container>0</container>
+   <pixmap></pixmap>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>sqlEdit</tabstop>
+  <tabstop>clearButton</tabstop>
+  <tabstop>submitButton</tabstop>
+  <tabstop>connectionWidget</tabstop>
+  <tabstop>table</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/calculator.ui b/tests/auto/uiloader/baseline/calculator.ui
new file mode 100644
index 0000000000000000000000000000000000000000..bb519ba2a6ba7d211b06f35a5273a20d96c49111
--- /dev/null
+++ b/tests/auto/uiloader/baseline/calculator.ui
@@ -0,0 +1,406 @@
+<ui version="4.0" >
+ <class>Calculator</class>
+ <widget class="QWidget" name="Calculator" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>314</width>
+    <height>301</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize" >
+   <size>
+    <width>314</width>
+    <height>301</height>
+   </size>
+  </property>
+  <property name="maximumSize" >
+   <size>
+    <width>314</width>
+    <height>301</height>
+   </size>
+  </property>
+  <property name="windowTitle" >
+   <string>Calculator</string>
+  </property>
+  <widget class="QToolButton" name="backspaceButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>50</y>
+     <width>91</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Backspace</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="clearButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>50</y>
+     <width>91</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Clear</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="clearAllButton" >
+   <property name="geometry" >
+    <rect>
+     <x>210</x>
+     <y>50</y>
+     <width>91</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Clear All</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="clearMemoryButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>MC</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="readMemoryButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>MR</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="setMemoryButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>MS</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="addToMemoryButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>M+</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="sevenButton" >
+   <property name="geometry" >
+    <rect>
+     <x>60</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>7</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="eightButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>8</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="nineButton" >
+   <property name="geometry" >
+    <rect>
+     <x>160</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>9</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="fourButton" >
+   <property name="geometry" >
+    <rect>
+     <x>60</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>4</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="fiveButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>5</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="sixButton" >
+   <property name="geometry" >
+    <rect>
+     <x>160</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>6</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="oneButton" >
+   <property name="geometry" >
+    <rect>
+     <x>60</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>1</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="twoButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>2</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="threeButton" >
+   <property name="geometry" >
+    <rect>
+     <x>160</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>3</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="zeroButton" >
+   <property name="geometry" >
+    <rect>
+     <x>60</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>0</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="pointButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>.</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="changeSignButton" >
+   <property name="geometry" >
+    <rect>
+     <x>160</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>+-</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="plusButton" >
+   <property name="geometry" >
+    <rect>
+     <x>210</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>+</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="divisionButton" >
+   <property name="geometry" >
+    <rect>
+     <x>210</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>/</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="timesButton" >
+   <property name="geometry" >
+    <rect>
+     <x>210</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>*</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="minusButton" >
+   <property name="geometry" >
+    <rect>
+     <x>210</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>-</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="squareRootButton" >
+   <property name="geometry" >
+    <rect>
+     <x>260</x>
+     <y>100</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Sqrt</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="powerButton" >
+   <property name="geometry" >
+    <rect>
+     <x>260</x>
+     <y>150</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>x^2</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="reciprocalButton" >
+   <property name="geometry" >
+    <rect>
+     <x>260</x>
+     <y>200</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>1/x</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="equalButton" >
+   <property name="geometry" >
+    <rect>
+     <x>260</x>
+     <y>250</y>
+     <width>41</width>
+     <height>41</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>=</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="display" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>291</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="maxLength" >
+    <number>15</number>
+   </property>
+   <property name="alignment" >
+    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+   </property>
+   <property name="readOnly" >
+    <bool>true</bool>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/calculatorform.ui b/tests/auto/uiloader/baseline/calculatorform.ui
new file mode 100644
index 0000000000000000000000000000000000000000..dda0e62ddd061e575125532a1fdf6beeddd3b348
--- /dev/null
+++ b/tests/auto/uiloader/baseline/calculatorform.ui
@@ -0,0 +1,303 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>CalculatorForm</class>
+ <widget class="QWidget" name="CalculatorForm" >
+  <property name="objectName" >
+   <string notr="true" >CalculatorForm</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>276</width>
+    <height>98</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>5</hsizetype>
+    <vsizetype>5</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Calculator Builder</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="objectName" >
+    <string notr="true" />
+   </property>
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="0" >
+    <layout class="QHBoxLayout" >
+     <property name="objectName" >
+      <string notr="true" />
+     </property>
+     <property name="margin" >
+      <number>1</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label" >
+         <property name="objectName" >
+          <string notr="true" >label</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>45</width>
+           <height>19</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Input 1</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="inputSpinBox1" >
+         <property name="objectName" >
+          <string notr="true" >inputSpinBox1</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>26</y>
+           <width>45</width>
+           <height>25</height>
+          </rect>
+         </property>
+         <property name="mouseTracking" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_3" >
+       <property name="objectName" >
+        <string notr="true" >label_3</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>54</x>
+         <y>1</y>
+         <width>7</width>
+         <height>52</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>+</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label_2" >
+         <property name="objectName" >
+          <string notr="true" >label_2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>45</width>
+           <height>19</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Input 2</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="inputSpinBox2" >
+         <property name="objectName" >
+          <string notr="true" >inputSpinBox2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>26</y>
+           <width>45</width>
+           <height>25</height>
+          </rect>
+         </property>
+         <property name="mouseTracking" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_3_2" >
+       <property name="objectName" >
+        <string notr="true" >label_3_2</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>120</x>
+         <y>1</y>
+         <width>7</width>
+         <height>52</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>=</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="margin" >
+        <number>1</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label_2_2_2" >
+         <property name="objectName" >
+          <string notr="true" >label_2_2_2</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>1</y>
+           <width>37</width>
+           <height>17</height>
+          </rect>
+         </property>
+         <property name="text" >
+          <string>Output</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="outputWidget" >
+         <property name="objectName" >
+          <string notr="true" >outputWidget</string>
+         </property>
+         <property name="geometry" >
+          <rect>
+           <x>1</x>
+           <y>24</y>
+           <width>37</width>
+           <height>27</height>
+          </rect>
+         </property>
+         <property name="frameShape" >
+          <enum>QFrame::Box</enum>
+         </property>
+         <property name="frameShadow" >
+          <enum>QFrame::Sunken</enum>
+         </property>
+         <property name="text" >
+          <string>0</string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask</set>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <spacer>
+     <property name="objectName" >
+      <string notr="true" >verticalSpacer</string>
+     </property>
+     <property name="geometry" >
+      <rect>
+       <x>85</x>
+       <y>69</y>
+       <width>20</width>
+       <height>20</height>
+      </rect>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="1" >
+    <spacer>
+     <property name="objectName" >
+      <string notr="true" >horizontalSpacer</string>
+     </property>
+     <property name="geometry" >
+      <rect>
+       <x>188</x>
+       <y>26</y>
+       <width>79</width>
+       <height>20</height>
+      </rect>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/certificateinfo.ui b/tests/auto/uiloader/baseline/certificateinfo.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3761fe8f50ef3f0be76dc0fe2d1353f4455d1cc2
--- /dev/null
+++ b/tests/auto/uiloader/baseline/certificateinfo.ui
@@ -0,0 +1,85 @@
+<ui version="4.0" >
+ <class>CertificateInfo</class>
+ <widget class="QDialog" name="CertificateInfo" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>397</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Display Certificate Information</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Certification Path</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <item>
+       <widget class="QListWidget" name="certificationPathView" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2" >
+     <property name="title" >
+      <string>Certificate Information</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <item>
+       <widget class="QListWidget" name="certificateInfoView" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Close</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>clicked(QAbstractButton*)</signal>
+   <receiver>CertificateInfo</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>343</x>
+     <y>374</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>352</x>
+     <y>422</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/chatdialog.ui b/tests/auto/uiloader/baseline/chatdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..c85e0d0f558a38f84d3b5ad1b66a0c1b6b64d1fc
--- /dev/null
+++ b/tests/auto/uiloader/baseline/chatdialog.ui
@@ -0,0 +1,79 @@
+<ui version="4.0" >
+ <class>ChatDialog</class>
+ <widget class="QDialog" name="ChatDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>513</width>
+    <height>349</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Chat</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QTextEdit" name="textEdit" >
+       <property name="focusPolicy" >
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="readOnly" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QListWidget" name="listWidget" >
+       <property name="maximumSize" >
+        <size>
+         <width>180</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="focusPolicy" >
+        <enum>Qt::NoFocus</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>Message:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="lineEdit" />
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/chatmainwindow.ui b/tests/auto/uiloader/baseline/chatmainwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0616dcb1377d0bf3eb02f6197d5512676172c49f
--- /dev/null
+++ b/tests/auto/uiloader/baseline/chatmainwindow.ui
@@ -0,0 +1,185 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>ChatMainWindow</class>
+ <widget class="QMainWindow" name="ChatMainWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>QtDBus Chat</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <layout class="QHBoxLayout" >
+    <property name="margin" >
+     <number>9</number>
+    </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <item>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QTextBrowser" name="chatHistory" >
+        <property name="acceptDrops" >
+         <bool>false</bool>
+        </property>
+        <property name="toolTip" >
+         <string>Messages sent and received from other users</string>
+        </property>
+        <property name="acceptRichText" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>Message:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>messageLineEdit</cstring>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="messageLineEdit" />
+        </item>
+        <item>
+         <widget class="QPushButton" name="sendButton" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>1</hsizetype>
+            <vsizetype>0</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="toolTip" >
+           <string>Sends a message to other people</string>
+          </property>
+          <property name="whatsThis" >
+           <string/>
+          </property>
+          <property name="text" >
+           <string>Send</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>800</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuQuit" >
+    <property name="title" >
+     <string>Help</string>
+    </property>
+    <addaction name="actionAboutQt" />
+   </widget>
+   <widget class="QMenu" name="menuFile" >
+    <property name="title" >
+     <string>File</string>
+    </property>
+    <addaction name="actionChangeNickname" />
+    <addaction name="separator" />
+    <addaction name="actionQuit" />
+   </widget>
+   <addaction name="menuFile" />
+   <addaction name="menuQuit" />
+  </widget>
+  <widget class="QStatusBar" name="statusbar" />
+  <action name="actionQuit" >
+   <property name="text" >
+    <string>Quit</string>
+   </property>
+   <property name="shortcut" >
+    <string>Ctrl+Q</string>
+   </property>
+  </action>
+  <action name="actionAboutQt" >
+   <property name="text" >
+    <string>About Qt...</string>
+   </property>
+  </action>
+  <action name="actionChangeNickname" >
+   <property name="text" >
+    <string>Change nickname...</string>
+   </property>
+   <property name="shortcut" >
+    <string>Ctrl+N</string>
+   </property>
+  </action>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>chatHistory</tabstop>
+  <tabstop>messageLineEdit</tabstop>
+  <tabstop>sendButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>messageLineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>sendButton</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>299</x>
+     <y>554</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>744</x>
+     <y>551</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>actionQuit</sender>
+   <signal>triggered(bool)</signal>
+   <receiver>ChatMainWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>399</x>
+     <y>299</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/chatsetnickname.ui b/tests/auto/uiloader/baseline/chatsetnickname.ui
new file mode 100644
index 0000000000000000000000000000000000000000..fb9894e09fcfc8d7dcb14b786d5d09a78442a06c
--- /dev/null
+++ b/tests/auto/uiloader/baseline/chatsetnickname.ui
@@ -0,0 +1,149 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>NicknameDialog</class>
+ <widget class="QDialog" name="NicknameDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>396</width>
+    <height>105</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>1</hsizetype>
+    <vsizetype>1</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Set nickname</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>1</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>New nickname:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="nickname" />
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>131</width>
+         <height>31</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>NicknameDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>278</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>96</x>
+     <y>254</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>NicknameDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>369</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>179</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/config.ui b/tests/auto/uiloader/baseline/config.ui
new file mode 100644
index 0000000000000000000000000000000000000000..bebe17b41f8288fd67ecaf45f1689c63d3db6d45
--- /dev/null
+++ b/tests/auto/uiloader/baseline/config.ui
@@ -0,0 +1,2528 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>Config</class>
+ <widget class="QDialog" name="Config" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>650</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Configure</string>
+  </property>
+  <property name="sizeGripEnabled" >
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <property name="leftMargin" >
+    <number>8</number>
+   </property>
+   <property name="topMargin" >
+    <number>8</number>
+   </property>
+   <property name="rightMargin" >
+    <number>8</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>8</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QGroupBox" name="ButtonGroup1" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="title" >
+        <string>Size</string>
+       </property>
+       <layout class="QVBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>11</number>
+        </property>
+        <property name="topMargin" >
+         <number>11</number>
+        </property>
+        <property name="rightMargin" >
+         <number>11</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>11</number>
+        </property>
+        <item>
+         <widget class="QRadioButton" name="size_176_220" >
+          <property name="text" >
+           <string>176x220 "SmartPhone"</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="size_240_320" >
+          <property name="text" >
+           <string>240x320 "PDA"</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="size_320_240" >
+          <property name="text" >
+           <string>320x240 "TV" / "QVGA"</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="size_640_480" >
+          <property name="text" >
+           <string>640x480 "VGA"</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="size_800_600" >
+          <property name="text" >
+           <string>800x600</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="size_1024_768" >
+          <property name="text" >
+           <string>1024x768</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" >
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <property name="leftMargin" >
+           <number>0</number>
+          </property>
+          <property name="topMargin" >
+           <number>0</number>
+          </property>
+          <property name="rightMargin" >
+           <number>0</number>
+          </property>
+          <property name="bottomMargin" >
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QRadioButton" name="size_custom" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text" >
+             <string>Custom</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="size_width" >
+            <property name="minimum" >
+             <number>1</number>
+            </property>
+            <property name="maximum" >
+             <number>1280</number>
+            </property>
+            <property name="singleStep" >
+             <number>16</number>
+            </property>
+            <property name="value" >
+             <number>400</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="size_height" >
+            <property name="minimum" >
+             <number>1</number>
+            </property>
+            <property name="maximum" >
+             <number>1024</number>
+            </property>
+            <property name="singleStep" >
+             <number>16</number>
+            </property>
+            <property name="value" >
+             <number>300</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="ButtonGroup2" >
+       <property name="title" >
+        <string>Depth</string>
+       </property>
+       <layout class="QVBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>11</number>
+        </property>
+        <property name="topMargin" >
+         <number>11</number>
+        </property>
+        <property name="rightMargin" >
+         <number>11</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>11</number>
+        </property>
+        <item>
+         <widget class="QRadioButton" name="depth_1" >
+          <property name="text" >
+           <string>1 bit monochrome</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_4gray" >
+          <property name="text" >
+           <string>4 bit grayscale</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_8" >
+          <property name="text" >
+           <string>8 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_12" >
+          <property name="text" >
+           <string>12 (16) bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_15" >
+          <property name="text" >
+           <string>15 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_16" >
+          <property name="text" >
+           <string>16 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_18" >
+          <property name="text" >
+           <string>18 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_24" >
+          <property name="text" >
+           <string>24 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_32" >
+          <property name="text" >
+           <string>32 bit</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="depth_32_argb" >
+          <property name="text" >
+           <string>32 bit ARGB</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="TextLabel1_3" >
+       <property name="text" >
+        <string>Skin</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="skin" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <item>
+        <property name="text" >
+         <string>None</string>
+        </property>
+       </item>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="touchScreen" >
+     <property name="text" >
+      <string>Emulate touch screen (no mouse move)</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="lcdScreen" >
+     <property name="text" >
+      <string>Emulate LCD screen (Only with fixed zoom of 3.0 times magnification)</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>10</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="QLabel" name="TextLabel1" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>&lt;p>Note that any applications using the virtual framebuffer will be terminated if you change the Size or Depth &lt;i>above&lt;/i>. You may freely modify the Gamma &lt;i>below&lt;/i>.</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="GroupBox1" >
+     <property name="title" >
+      <string>Gamma</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="leftMargin" >
+       <number>11</number>
+      </property>
+      <property name="topMargin" >
+       <number>11</number>
+      </property>
+      <property name="rightMargin" >
+       <number>11</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>11</number>
+      </property>
+      <property name="horizontalSpacing" >
+       <number>6</number>
+      </property>
+      <property name="verticalSpacing" >
+       <number>6</number>
+      </property>
+      <item row="6" column="0" >
+       <widget class="QLabel" name="TextLabel3" >
+        <property name="text" >
+         <string>Blue</string>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="1" >
+       <widget class="QSlider" name="bslider" >
+        <property name="palette" >
+         <palette>
+          <active>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>38</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </active>
+          <inactive>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>38</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </inactive>
+          <disabled>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>38</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </disabled>
+         </palette>
+        </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
+        <property name="value" >
+         <number>100</number>
+        </property>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="2" >
+       <widget class="QLabel" name="blabel" >
+        <property name="text" >
+         <string>1.0</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" >
+       <widget class="QLabel" name="TextLabel2" >
+        <property name="text" >
+         <string>Green</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1" >
+       <widget class="QSlider" name="gslider" >
+        <property name="palette" >
+         <palette>
+          <active>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>255</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>255</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>255</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>127</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>170</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </active>
+          <inactive>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>255</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>255</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>255</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>127</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>170</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </inactive>
+          <disabled>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>255</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>255</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>38</red>
+              <green>255</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>127</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>170</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </disabled>
+         </palette>
+        </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
+        <property name="value" >
+         <number>100</number>
+        </property>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="2" >
+       <widget class="QLabel" name="glabel" >
+        <property name="text" >
+         <string>1.0</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="TextLabel7" >
+        <property name="text" >
+         <string>All</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" >
+       <widget class="QLabel" name="TextLabel8" >
+        <property name="text" >
+         <string>1.0</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QSlider" name="gammaslider" >
+        <property name="palette" >
+         <palette>
+          <active>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>170</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </active>
+          <inactive>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>170</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </inactive>
+          <disabled>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>170</green>
+              <blue>170</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </disabled>
+         </palette>
+        </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
+        <property name="value" >
+         <number>100</number>
+        </property>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="TextLabel1_2" >
+        <property name="text" >
+         <string>Red</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2" >
+       <widget class="QLabel" name="rlabel" >
+        <property name="text" >
+         <string>1.0</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QSlider" name="rslider" >
+        <property name="palette" >
+         <palette>
+          <active>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>38</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </active>
+          <inactive>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>38</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </inactive>
+          <disabled>
+           <colorrole role="WindowText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Button" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Light" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>127</green>
+              <blue>127</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Midlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>38</green>
+              <blue>38</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Dark" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>127</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Mid" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>170</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Text" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="BrightText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="ButtonText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>128</red>
+              <green>128</green>
+              <blue>128</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Base" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Window" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>220</red>
+              <green>220</green>
+              <blue>220</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Shadow" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Highlight" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>10</red>
+              <green>95</green>
+              <blue>137</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="HighlightedText" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="Link" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="LinkVisited" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+             </color>
+            </brush>
+           </colorrole>
+           <colorrole role="AlternateBase" >
+            <brush brushstyle="SolidPattern" >
+             <color alpha="255" >
+              <red>232</red>
+              <green>232</green>
+              <blue>232</blue>
+             </color>
+            </brush>
+           </colorrole>
+          </disabled>
+         </palette>
+        </property>
+        <property name="maximum" >
+         <number>400</number>
+        </property>
+        <property name="value" >
+         <number>100</number>
+        </property>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="0" colspan="3" >
+       <widget class="QPushButton" name="PushButton3" >
+        <property name="text" >
+         <string>Set all to 1.0</string>
+        </property>
+       </widget>
+      </item>
+      <item rowspan="9" row="0" column="3" >
+       <widget class="GammaView" native="1" name="MyCustomWidget1" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="buttonOk" >
+       <property name="text" >
+        <string>&amp;OK</string>
+       </property>
+       <property name="autoDefault" >
+        <bool>true</bool>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="buttonCancel" >
+       <property name="text" >
+        <string>&amp;Cancel</string>
+       </property>
+       <property name="autoDefault" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <customwidgets>
+  <customwidget>
+   <class>GammaView</class>
+   <extends></extends>
+   <header>gammaview.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>size_width</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>size_custom</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>152</x>
+     <y>193</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>94</x>
+     <y>199</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>size_height</sender>
+   <signal>valueChanged(int)</signal>
+   <receiver>size_custom</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>259</x>
+     <y>196</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>64</x>
+     <y>188</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/connectdialog.ui b/tests/auto/uiloader/baseline/connectdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..bd062ebaaf724b9f5bbd5946498d40c1324c983d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/connectdialog.ui
@@ -0,0 +1,150 @@
+<ui version="4.0" >
+ <class>ConnectDialog</class>
+ <widget class="QDialog" name="ConnectDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>585</width>
+    <height>361</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Configure Connection</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" colspan="2" >
+    <widget class="QGroupBox" name="signalGroupBox" >
+     <property name="title" >
+      <string>GroupBox</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <item>
+       <widget class="QListWidget" name="signalList" >
+        <property name="textElideMode" >
+         <enum>Qt::ElideMiddle</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QToolButton" name="editSignalsButton" >
+          <property name="text" >
+           <string>Edit...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="2" >
+    <widget class="QGroupBox" name="slotGroupBox" >
+     <property name="title" >
+      <string>GroupBox</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <item>
+       <widget class="QListWidget" name="slotList" >
+        <property name="textElideMode" >
+         <enum>Qt::ElideMiddle</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QToolButton" name="editSlotsButton" >
+          <property name="text" >
+           <string>Edit...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QCheckBox" name="showAllCheckBox" >
+     <property name="text" >
+      <string>Show signals and slots inherited from QWidget</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ConnectDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ConnectDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/controller.ui b/tests/auto/uiloader/baseline/controller.ui
new file mode 100644
index 0000000000000000000000000000000000000000..379015bf303433a3c5b23819bcdb189b6a34ea00
--- /dev/null
+++ b/tests/auto/uiloader/baseline/controller.ui
@@ -0,0 +1,64 @@
+<ui version="4.0" >
+ <class>Controller</class>
+ <widget class="QWidget" name="Controller" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>255</width>
+    <height>111</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Controller</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="1" column="1" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Controller</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignCenter</set>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QPushButton" name="decelerate" >
+     <property name="text" >
+      <string>Decelerate</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QPushButton" name="accelerate" >
+     <property name="text" >
+      <string>Accelerate</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2" >
+    <widget class="QPushButton" name="right" >
+     <property name="text" >
+      <string>Right</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QPushButton" name="left" >
+     <property name="text" >
+      <string>Left</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/cookies.ui b/tests/auto/uiloader/baseline/cookies.ui
new file mode 100644
index 0000000000000000000000000000000000000000..c4bccc548305694f9f3320c01cb4652bd775ac67
--- /dev/null
+++ b/tests/auto/uiloader/baseline/cookies.ui
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>CookiesDialog</class>
+ <widget class="QDialog" name="CookiesDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>550</width>
+    <height>370</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Cookies</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>252</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="1" >
+    <widget class="SearchLineEdit" name="search" />
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="EditTableView" name="cookiesTable" />
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QPushButton" name="removeButton" >
+       <property name="text" >
+        <string>&amp;Remove</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeAllButton" >
+       <property name="text" >
+        <string>Remove &amp;All Cookies</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SearchLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>searchlineedit.h</header>
+  </customwidget>
+  <customwidget>
+   <class>EditTableView</class>
+   <extends>QTableView</extends>
+   <header>edittableview.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>CookiesDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>472</x>
+     <y>329</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>461</x>
+     <y>356</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/cookiesexceptions.ui b/tests/auto/uiloader/baseline/cookiesexceptions.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3d9ef6241422673107c8bada42d86dd9b8746a35
--- /dev/null
+++ b/tests/auto/uiloader/baseline/cookiesexceptions.ui
@@ -0,0 +1,184 @@
+<ui version="4.0" >
+ <class>CookiesExceptionsDialog</class>
+ <widget class="QDialog" name="CookiesExceptionsDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>466</width>
+    <height>446</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Cookie Exceptions</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QGroupBox" name="newExceptionGroupBox" >
+     <property name="title" >
+      <string>New Exception</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" >
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>Domain:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="domainLineEdit" />
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" >
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>81</width>
+            <height>25</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QPushButton" name="blockButton" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+          <property name="text" >
+           <string>Block</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="allowForSessionButton" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+          <property name="text" >
+           <string>Allow For Session</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="allowButton" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+          <property name="text" >
+           <string>Allow</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="ExceptionsGroupBox" >
+     <property name="title" >
+      <string>Exceptions</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" colspan="3" >
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>252</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="3" >
+       <widget class="SearchLineEdit" name="search" />
+      </item>
+      <item row="1" column="0" colspan="4" >
+       <widget class="EditTableView" name="exceptionTable" />
+      </item>
+      <item row="2" column="0" >
+       <widget class="QPushButton" name="removeButton" >
+        <property name="text" >
+         <string>&amp;Remove</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QPushButton" name="removeAllButton" >
+        <property name="text" >
+         <string>Remove &amp;All</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2" colspan="2" >
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SearchLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>searchlineedit.h</header>
+  </customwidget>
+  <customwidget>
+   <class>EditTableView</class>
+   <extends>QTableView</extends>
+   <header>edittableview.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>CookiesExceptionsDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>381</x>
+     <y>428</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>336</x>
+     <y>443</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_borderimage.ui b/tests/auto/uiloader/baseline/css_borderimage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4a59ca2e08083cab38c192327ee4310ab31da95d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_borderimage.ui
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>530</width>
+    <height>309</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QLabel { border-width: 28; color: #0f0; background-color: white; }
+ 
+#label_repeat_repeat {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 repeat repeat;
+}
+
+#label_stretch_repeat {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 stretch repeat;
+}
+
+#label_round_repeat {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 round repeat;
+}
+
+
+#label_repeat_round {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 repeat round;
+}
+
+#label_stretch_round {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 stretch round;
+}
+
+#label_round_round {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 round round;
+}
+
+#label_repeat_stretch {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 repeat stretch;
+}
+
+#label_stretch_stretch {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 stretch stretch;
+}
+
+#label_round_stretch {
+	border-image: url(&quot;images/borderimage.png&quot;) 28 round stretch;
+}
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label_stretch_stretch">
+     <property name="text">
+      <string>Strecth Stretch</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLabel" name="label_stretch_round">
+     <property name="text">
+      <string>Stretch Round</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QLabel" name="label_stretch_repeat">
+     <property name="text">
+      <string>Stretch repeat</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label_round_stretch">
+     <property name="text">
+      <string>Round Stretch</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QLabel" name="label_round_round">
+     <property name="text">
+      <string>Round Round</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QLabel" name="label_round_repeat">
+     <property name="text">
+      <string>Round Repeat</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="label_repeat_stretch">
+     <property name="text">
+      <string>Repeat Stretch</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QLabel" name="label_repeat_round">
+     <property name="text">
+      <string>Repeat Round</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2">
+    <widget class="QLabel" name="label_repeat_repeat">
+     <property name="text">
+      <string>Repeat Repeat</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui b/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0ece79a08acf6f30d540e629a496e2d14de606b8
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>606</width>
+    <height>388</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">* {   border-image: url(&quot;images/pushbutton.png&quot;) 6 6 6 6; border-width:6px;  }</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QVBoxLayout" name="verticalLayout_7">
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QFrame" name="frame_2">
+        <layout class="QVBoxLayout" name="verticalLayout_4">
+         <item>
+          <widget class="QLabel" name="label_2">
+           <property name="text">
+            <string>Each widget should have a background image. including the top level</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="pushButton_3">
+           <property name="text">
+            <string>PushButton</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QProgressBar" name="progressBar_2">
+           <property name="value">
+            <number>24</number>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="verticalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QWidget" name="widget_2" native="true">
+        <layout class="QVBoxLayout" name="verticalLayout_5">
+         <item>
+          <widget class="QPushButton" name="pushButton_4">
+           <property name="text">
+            <string>PushButton</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="spinBox_2"/>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="radioButton_4">
+           <property name="text">
+            <string>RadioButton</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QScrollArea" name="scrollArea_2">
+           <property name="widgetResizable">
+            <bool>true</bool>
+           </property>
+           <widget class="QWidget" name="scrollAreaWidgetContents_2">
+            <property name="geometry">
+             <rect>
+              <x>0</x>
+              <y>0</y>
+              <width>260</width>
+              <height>197</height>
+             </rect>
+            </property>
+            <layout class="QGridLayout" name="gridLayout_2">
+             <item row="2" column="0" colspan="2">
+              <widget class="QSlider" name="horizontalSlider_2">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="0">
+              <widget class="QLCDNumber" name="lcdNumber_2"/>
+             </item>
+             <item row="0" column="1">
+              <widget class="QRadioButton" name="radioButton_5">
+               <property name="text">
+                <string>RadioButton</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QRadioButton" name="radioButton_6">
+               <property name="text">
+                <string>RadioButton</string>
+               </property>
+              </widget>
+             </item>
+             <item row="3" column="0">
+              <widget class="QCheckBox" name="checkBox_4">
+               <property name="text">
+                <string>CheckBox</string>
+               </property>
+              </widget>
+             </item>
+             <item row="4" column="0">
+              <widget class="QCheckBox" name="checkBox_5">
+               <property name="text">
+                <string>CheckBox</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="groupBox_2">
+        <property name="title">
+         <string>GroupBox</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_6">
+         <item>
+          <widget class="QCheckBox" name="checkBox_6">
+           <property name="text">
+            <string>CheckBox</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="lineEdit_2">
+           <property name="text">
+            <string>Line Edit</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QListWidget" name="listWidget_2">
+           <item>
+            <property name="text">
+             <string>New Item</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>New Item</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>New Item</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>New Item</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>New Item</string>
+            </property>
+           </item>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <widget class="QDialogButtonBox" name="buttonBox">
+      <property name="standardButtons">
+       <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>606</width>
+     <height>36</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionOpen"/>
+    <addaction name="actionClose"/>
+   </widget>
+   <widget class="QMenu" name="menuEdit">
+    <property name="title">
+     <string>Edit</string>
+    </property>
+   </widget>
+   <addaction name="menuFile"/>
+   <addaction name="menuEdit"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="actionOpen">
+   <property name="text">
+    <string>Open</string>
+   </property>
+  </action>
+  <action name="actionClose">
+   <property name="text">
+    <string>Close</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui b/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui
new file mode 100644
index 0000000000000000000000000000000000000000..8c5f57cb13f852c5813029fb8fb20e312fa8256d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>698</width>
+    <height>589</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">* { 
+	background: yellow;
+	padding: 2px;
+	border-radius: 4px;
+}
+
+QGroupBox {
+	border: 1px solid gray;
+}
+
+QAbstractButton {
+	background: cyan;
+}
+
+QFrame, QMenuBar {
+	background: magenta;
+}
+
+QLineEdit, QSpinBox {
+	background: white;
+}
+
+#gb1 * {
+}
+
+#gb2 * {
+	border: 1px solid blue;
+}
+
+#gb3 * {
+	border: 0px solid blue;
+}
+
+#gb4 * {
+	border-image: url(&quot;images/pushbutton.png&quot;) 6 6 6 6;
+	border-width:6px;
+}
+</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout_4">
+    <item row="0" column="0">
+     <widget class="QGroupBox" name="gb1">
+      <property name="title">
+       <string>No border</string>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QFrame" name="frame">
+         <property name="frameShape">
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow">
+          <enum>QFrame::Raised</enum>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_2">
+          <item>
+           <widget class="QPushButton" name="pushButton_4">
+            <property name="text">
+             <string>PushButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="spinBox_2"/>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_6">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="checkBox_4">
+            <property name="text">
+             <string>CheckBox</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="lineEdit">
+            <property name="text">
+             <string>LineEdit</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboBox">
+            <item>
+             <property name="text">
+              <string>ComboBox</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QListWidget" name="listWidget_2">
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item row="1" column="0">
+     <widget class="QGroupBox" name="gb3">
+      <property name="title">
+       <string>0px border</string>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="QFrame" name="frame_2">
+         <property name="frameShape">
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow">
+          <enum>QFrame::Raised</enum>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_3">
+          <item>
+           <widget class="QPushButton" name="pushButton_5">
+            <property name="text">
+             <string>PushButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="spinBox_3"/>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_7">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="checkBox_5">
+            <property name="text">
+             <string>CheckBox</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="lineEdit_2">
+            <property name="text">
+             <string>LineEdit</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboBox_2">
+            <item>
+             <property name="text">
+              <string>ComboBox</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QListWidget" name="listWidget_3">
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item row="1" column="1">
+     <widget class="QGroupBox" name="gb4">
+      <property name="title">
+       <string>border-image</string>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_4">
+       <item>
+        <widget class="QFrame" name="frame_4">
+         <property name="frameShape">
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow">
+          <enum>QFrame::Raised</enum>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
+           <widget class="QPushButton" name="pushButton_7">
+            <property name="text">
+             <string>PushButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="spinBox_5"/>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_9">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="checkBox_7">
+            <property name="text">
+             <string>CheckBox</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="lineEdit_4">
+            <property name="text">
+             <string>LineEdit</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboBox_4">
+            <item>
+             <property name="text">
+              <string>ComboBox</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QListWidget" name="listWidget_5">
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item row="0" column="1">
+     <widget class="QGroupBox" name="gb2">
+      <property name="title">
+       <string>1px border</string>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <item>
+        <widget class="QFrame" name="frame_3">
+         <property name="frameShape">
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow">
+          <enum>QFrame::Raised</enum>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_4">
+          <item>
+           <widget class="QPushButton" name="pushButton_6">
+            <property name="text">
+             <string>PushButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="spinBox_4"/>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_8">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="checkBox_6">
+            <property name="text">
+             <string>CheckBox</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="lineEdit_3">
+            <property name="text">
+             <string>LineEdit</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboBox_3">
+            <item>
+             <property name="text">
+              <string>ComboBox</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QListWidget" name="listWidget_4">
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>New Item</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>698</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionOpen"/>
+    <addaction name="actionClose"/>
+   </widget>
+   <widget class="QMenu" name="menuEdit">
+    <property name="title">
+     <string>Edit</string>
+    </property>
+   </widget>
+   <addaction name="menuFile"/>
+   <addaction name="menuEdit"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="actionOpen">
+   <property name="text">
+    <string>Open</string>
+   </property>
+  </action>
+  <action name="actionClose">
+   <property name="text">
+    <string>Close</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_buttons_background.ui b/tests/auto/uiloader/baseline/css_buttons_background.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3d80aeb4b4756bb1b64fce9c4dd930c64122e538
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_buttons_background.ui
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>449</width>
+    <height>254</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">#box_color QAbstractButton {
+background: pink;
+color: purple;
+}
+
+#box_gradiant QAbstractButton {
+	background-color: qconicalgradient(cx:0.5, cy:0.5, angle:0, stop:0 rgba(255, 255, 255, 255), stop:0.373979 rgba(255, 255, 255, 255), stop:0.373991 rgba(33, 30, 255, 255), stop:0.624018 rgba(33, 30, 255, 255), stop:0.624043 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255));
+color: cyan;
+}
+
+#box_pixmap QAbstractButton {
+background: url(&quot;images/pagefold.png&quot;)  no-repeat top right;
+color: yellow;
+}
+
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_4">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="box_color">
+     <property name="title">
+      <string>color</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0" colspan="2">
+       <widget class="QPushButton" name="pushButton">
+        <property name="text">
+         <string>PushButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QToolButton" name="toolButton">
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>70</width>
+          <height>27</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="2" column="0" colspan="2">
+       <widget class="QCheckBox" name="checkBox">
+        <property name="text">
+         <string>CheckBox</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" colspan="2">
+       <widget class="QRadioButton" name="radioButton_2">
+        <property name="text">
+         <string>RadioButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QToolButton" name="toolButton_4">
+        <property name="text">
+         <string>autoraise</string>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QPushButton" name="pushButton_4">
+        <property name="text">
+         <string>Checked</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QGroupBox" name="box_gradiant">
+     <property name="title">
+      <string>gradiant</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="0" colspan="2">
+       <widget class="QPushButton" name="pushButton_2">
+        <property name="text">
+         <string>PushButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QToolButton" name="toolButton_2">
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>78</width>
+          <height>24</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="2" column="0" colspan="2">
+       <widget class="QCheckBox" name="checkBox_2">
+        <property name="text">
+         <string>CheckBox</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" colspan="2">
+       <widget class="QRadioButton" name="radioButton">
+        <property name="text">
+         <string>RadioButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QToolButton" name="toolButton_5">
+        <property name="text">
+         <string>autoraise</string>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QPushButton" name="pushButton_5">
+        <property name="text">
+         <string>Checked</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QGroupBox" name="box_pixmap">
+     <property name="title">
+      <string>pixmap</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_3">
+      <item row="0" column="0" colspan="2">
+       <widget class="QPushButton" name="pushButton_3">
+        <property name="text">
+         <string>PushButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QToolButton" name="toolButton_3">
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>78</width>
+          <height>24</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="2" column="0" colspan="2">
+       <widget class="QCheckBox" name="checkBox_3">
+        <property name="text">
+         <string>CheckBox</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" colspan="2">
+       <widget class="QRadioButton" name="radioButton_3">
+        <property name="text">
+         <string>RadioButton</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QToolButton" name="toolButton_6">
+        <property name="text">
+         <string>autoraise</string>
+        </property>
+        <property name="autoRaise">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QPushButton" name="pushButton_6">
+        <property name="text">
+         <string>Checked</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>51</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_combobox_background.ui b/tests/auto/uiloader/baseline/css_combobox_background.ui
new file mode 100644
index 0000000000000000000000000000000000000000..387b371976cf96236c7f6f0f0305ee14b49633a5
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_combobox_background.ui
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>295</width>
+    <height>229</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">#box_color QComboBox {
+background: pink;
+color: purple;
+}
+
+#box_gradiant QComboBox {
+	background-color: qconicalgradient(cx:0.5, cy:0.5, angle:0, stop:0 rgba(255, 255, 255, 255), stop:0.373979 rgba(255, 255, 255, 255), stop:0.373991 rgba(33, 30, 255, 255), stop:0.624018 rgba(33, 30, 255, 255), stop:0.624043 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255));
+color: cyan;
+}
+
+#box_pixmap QAbstractButton {
+background: url(&quot;images/pagefold.png&quot;)  no-repeat top right;
+color: yellow;
+}
+
+#comboBox_A , #comboBox_B{ border: 3px solid #4e5; }
+
+</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QGroupBox" name="box_color">
+     <property name="title">
+      <string>color</string>
+     </property>
+     <property name="checkable">
+      <bool>false</bool>
+     </property>
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="3" column="0">
+       <widget class="QComboBox" name="comboBox_2">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="QComboBox" name="comboBox_3">
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QComboBox" name="comboBox_4">
+        <property name="editable">
+         <bool>true</bool>
+        </property>
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QComboBox" name="comboBox_5">
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QComboBox" name="comboBox_A">
+        <item>
+         <property name="text">
+          <string>ComboText</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="6" column="0">
+       <spacer name="verticalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="box_gradiant">
+     <property name="title">
+      <string>color</string>
+     </property>
+     <property name="checkable">
+      <bool>false</bool>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="3" column="0">
+       <widget class="QComboBox" name="comboBox_6">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="QComboBox" name="comboBox_7">
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QComboBox" name="comboBox_8">
+        <property name="editable">
+         <bool>true</bool>
+        </property>
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QComboBox" name="comboBox_9">
+        <item>
+         <property name="text">
+          <string>Foo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QComboBox" name="comboBox_B">
+        <item>
+         <property name="text">
+          <string>ComboText</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Bouz</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="6" column="0">
+       <spacer name="verticalSpacer">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_exemple_coffee.ui b/tests/auto/uiloader/baseline/css_exemple_coffee.ui
new file mode 100644
index 0000000000000000000000000000000000000000..619f912a9939731ca894c06284d07909a91ba207
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_exemple_coffee.ui
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>413</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Style Sheet</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">.QWidget {
+   background-color: beige;
+}
+
+/* Nice Windows-XP-style password character. */
+QLineEdit[echoMode=&quot;2&quot;] {
+    lineedit-password-character: 9679;
+}
+
+/* We provide a min-width and min-height for push buttons
+   so that they look elegant regardless of the width of the text. */
+QPushButton {
+    background-color: palegoldenrod;
+    border-width: 2px;
+    border-color: darkkhaki;
+    border-style: solid;
+    border-radius: 5;
+    padding: 3px;
+    min-width: 9ex;
+    min-height: 2.5ex;
+}
+
+QPushButton:hover {
+   background-color: khaki;
+}
+
+/* Increase the padding, so the text is shifted when the button is
+   pressed. */
+QPushButton:pressed {
+    padding-left: 5px;
+    padding-top: 5px;
+    background-color: #d0d67c;
+}
+
+QLabel, QAbstractButton {
+    font: bold;
+}
+
+/* Mark mandatory fields with a brownish color. */
+.mandatory {
+    color: brown;
+}
+
+/* Bold text on status bar looks awful. */
+QStatusBar QLabel {
+   font: normal;
+}
+
+QStatusBar::item {
+    border-width: 1;
+    border-color: darkkhaki;
+    border-style: solid;
+    border-radius: 2;
+}
+
+QComboBox, QLineEdit, QSpinBox, QTextEdit, QListView {
+    background-color: cornsilk;
+    selection-color: #0a214c; 
+    selection-background-color: #C19A6B;
+}
+
+QListView {
+    show-decoration-selected: 1;
+}
+
+QListView::item:hover {
+    background-color: wheat;
+}
+
+/* We reserve 1 pixel space in padding. When we get the focus,
+   we kill the padding and enlarge the border. This makes the items
+   glow. */
+QLineEdit, QFrame {
+    border-width: 2px;
+    padding: 1px;
+    border-style: solid;
+    border-color: darkkhaki;
+    border-radius: 5px;
+}
+
+/* As mentioned above, eliminate the padding and increase the border. */
+QLineEdit:focus, QFrame:focus {
+    border-width: 3px;
+    padding: 0px;
+}
+
+/* A QLabel is a QFrame ... */
+QLabel {
+    border: none;
+    padding: 0;
+    background: none;
+}
+
+/* A QToolTip is a QLabel ... */
+QToolTip {
+    border: 2px solid darkkhaki;
+    padding: 5px;
+    border-radius: 3px;
+    opacity: 200;
+}
+
+/* Nice to have the background color change when hovered. */
+QRadioButton:hover, QCheckBox:hover {
+    background-color: wheat;
+}
+
+/* Force the dialog's buttons to follow the Windows guidelines. */
+QDialogButtonBox {
+    button-layout: 0;
+}
+
+
+</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QVBoxLayout">
+    <property name="spacing">
+     <number>6</number>
+    </property>
+    <property name="margin">
+     <number>9</number>
+    </property>
+    <item>
+     <widget class="QFrame" name="mainFrame">
+      <property name="frameShape">
+       <enum>QFrame::StyledPanel</enum>
+      </property>
+      <layout class="QGridLayout">
+       <property name="margin">
+        <number>9</number>
+       </property>
+       <property name="spacing">
+        <number>6</number>
+       </property>
+       <item row="6" column="0" colspan="5">
+        <widget class="QCheckBox" name="agreeCheckBox">
+         <property name="toolTip">
+          <string>Please read the LICENSE file before checking</string>
+         </property>
+         <property name="text">
+          <string>I &amp;accept the terms and &amp;conditions</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Profession:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
+         </property>
+         <property name="buddy">
+          <cstring>professionList</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0">
+        <widget class="QLabel" name="nameLabel">
+         <property name="text">
+          <string>&amp;Name:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>nameCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QRadioButton" name="maleRadioButton">
+         <property name="toolTip">
+          <string>Check this if you are male</string>
+         </property>
+         <property name="text">
+          <string>&amp;Male</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="passwordLabel">
+         <property name="text">
+          <string>&amp;Password:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>passwordEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1" colspan="4">
+        <widget class="QComboBox" name="countryCombo">
+         <property name="toolTip">
+          <string>Specify country of origin</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify country of origin</string>
+         </property>
+         <property name="currentIndex">
+          <number>6</number>
+         </property>
+         <item>
+          <property name="text">
+           <string>Egypt</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>France</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Germany</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>India</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Italy</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Norway</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Pakistan</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="ageLabel">
+         <property name="text">
+          <string>&amp;Age:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>ageSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="countryLabel">
+         <property name="text">
+          <string>Country:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>countryCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="genderLabel">
+         <property name="text">
+          <string>Gender:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1" colspan="4">
+        <widget class="QLineEdit" name="passwordEdit">
+         <property name="toolTip">
+          <string>Specify your password</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your password</string>
+         </property>
+         <property name="text">
+          <string>Password</string>
+         </property>
+         <property name="echoMode">
+          <enum>QLineEdit::Password</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" colspan="2">
+        <widget class="QRadioButton" name="femaleRadioButton">
+         <property name="styleSheet">
+          <string>Check this if you are female</string>
+         </property>
+         <property name="text">
+          <string>&amp;Female</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="2">
+        <widget class="QSpinBox" name="ageSpinBox">
+         <property name="toolTip">
+          <string>Specify your age</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your age</string>
+         </property>
+         <property name="minimum">
+          <number>12</number>
+         </property>
+         <property name="value">
+          <number>22</number>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" colspan="4">
+        <widget class="QComboBox" name="nameCombo">
+         <property name="toolTip">
+          <string>Specify your name</string>
+         </property>
+         <property name="editable">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="4">
+        <spacer>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="2" column="3" colspan="2">
+        <spacer>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>61</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="7" column="3" colspan="2">
+        <widget class="QDialogButtonBox" name="buttonBox">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="standardButtons">
+          <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="1" colspan="4">
+        <widget class="QListWidget" name="professionList">
+         <property name="toolTip">
+          <string>Select your profession</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your name here</string>
+         </property>
+         <property name="whatsThis">
+          <string>Specify your name here</string>
+         </property>
+         <property name="currentRow">
+          <number>0</number>
+         </property>
+         <item>
+          <property name="text">
+           <string>Developer</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Student</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Fisherman</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>400</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menu_File">
+    <property name="title">
+     <string>&amp;File</string>
+    </property>
+    <addaction name="editStyleAction"/>
+    <addaction name="separator"/>
+    <addaction name="exitAction"/>
+   </widget>
+   <widget class="QMenu" name="menu_Help">
+    <property name="title">
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="aboutAction"/>
+    <addaction name="aboutQtAction"/>
+   </widget>
+   <addaction name="menu_File"/>
+   <addaction name="menu_Help"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="exitAction">
+   <property name="text">
+    <string>&amp;Exit</string>
+   </property>
+  </action>
+  <action name="aboutQtAction">
+   <property name="text">
+    <string>About Qt</string>
+   </property>
+  </action>
+  <action name="editStyleAction">
+   <property name="text">
+    <string>Edit &amp;Style...</string>
+   </property>
+  </action>
+  <action name="aboutAction">
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_exemple_pagefold.ui b/tests/auto/uiloader/baseline/css_exemple_pagefold.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d23fad34c41313f6787d17c103dd52e7331e067e
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_exemple_pagefold.ui
@@ -0,0 +1,656 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>426</width>
+    <height>413</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Style Sheet</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">/* Customize any plain widget that is a child of a QMainWindow. */
+QMainWindow &gt; .QWidget {
+    background-color: gainsboro;
+    background-image: url(images/pagefold.png);
+    background-position: top right;
+    background-repeat: no-repeat
+}
+
+/* Provide a padding for the layout inside the frame. The frame
+   exists only to provide a padding for the top-right image, so we
+   explicitly disable the border. */
+#mainFrame {
+    padding-right: 30px;
+    border-style: none;
+    border-image: none; /* since we set a border-image below */
+}
+
+/* mainFrame won't have this border-image since we have
+   explicitly set it to 'none' using a more specific selector. */
+QFrame, QLineEdit, QComboBox[editable=&quot;true&quot;], QSpinBox {
+    border-image: url(images/frame.png) 4;
+    border-width: 3;
+}
+
+QLabel {
+    border: none;
+    border-image: none;
+    padding: 0;
+    background: none;
+}
+
+/* Make text in message boxes selectable. */
+QMessageBox {
+    /* LinksAccessibleByMouse | TextSelectableByMouse */
+    messagebox-text-interaction-flags: 5;
+}
+   
+/* Set the selection colors for all widgets. */
+QWidget {
+    selection-color: black;
+    selection-background-color: Silver;
+    color: black;
+}
+
+/* Make the entire row selected in item views. */
+QAbstractItemView {
+    show-decoration-selected: 1;
+}
+
+/* Nice WindowsXP-style password character for password line edits. */
+QLineEdit[echoMode=&quot;2&quot;] {
+    lineedit-password-character: 9679;
+}
+
+/* Customize tooltips. */
+QToolTip {
+    background-color: rgb(200,200,255);
+    border-color: darkslategray;
+    border-width: 1px;
+    border-style: solid;
+    padding: 3px;
+    font: bold;
+    border-radius: 3px;
+    opacity: 200;
+}
+
+/* Customize radio buttons. */
+
+QRadioButton {
+    spacing: 5px;
+}
+
+QRadioButton::indicator {
+    width: 13px;
+    height: 13px;
+}
+
+QRadioButton::indicator::unchecked {
+    image: url(images/radiobutton_unchecked.png);
+}
+
+QRadioButton::indicator:unchecked:hover {
+    image: url(images/radiobutton_unchecked_hover.png);
+}
+
+QRadioButton::indicator:unchecked:pressed {
+    image: url(images/radiobutton_unchecked_pressed.png);
+}
+
+QRadioButton::indicator::checked {
+    image: url(images/radiobutton_checked.png);
+}
+
+QRadioButton::indicator:checked:hover {
+    image: url(images/radiobutton_checked_hover.png);
+}
+
+QRadioButton::indicator:checked:pressed {
+    image: url(images/radiobutton_checked_pressed.png);
+}
+
+/* Customize arrows. */
+
+*::down-arrow, *::menu-indicator {
+    image: url(images/down_arrow.png);
+    width: 7px;
+    height: 7px;
+}
+
+*::down-arrow:disabled, *::down-arrow:off {
+   image: url(images/down_arrow_disabled.png);
+}
+
+*::up-arrow {
+    image: url(images/up_arrow.png);
+    width: 7px;
+    height: 7px;
+}
+
+*::up-arrow:disabled, *::up-arrow:off {
+   image: url(images/up_arrow_disabled.png);
+}
+
+/* Customize push buttons and comboboxes. Our read-only combobox
+   is very similar to a push button, so they share the same border image. */
+
+QPushButton {
+    min-width: 4em;
+}
+
+QPushButton, QComboBox[editable=&quot;false&quot;],
+QComboBox[editable=&quot;true&quot;]::drop-down {
+    border-image: url(images/pushbutton.png) 5;
+    border-width: 5;
+}
+
+QPushButton:hover, QComboBox[editable=&quot;false&quot;]:hover,
+QComboBox[editable=&quot;true&quot;]::drop-down:hover, QMenuBar::item:hover {
+    border-image: url(images/pushbutton_hover.png) 5;
+    border-width: 5;
+}
+
+QPushButton:pressed, QComboBox[editable=&quot;false&quot;]:on,
+QComboBox[editable=&quot;true&quot;]::drop-down:on, QMenuBar::item:on {
+    border-image: url(images/pushbutton_pressed.png) 5;
+    border-width: 5;
+}
+
+/* Customize read-only comboboxes. */
+
+QComboBox[editable=&quot;false&quot;] {
+    padding-left: 3px;
+    padding-right: 20px; /* space for the arrow */
+}
+
+QComboBox[editable=&quot;false&quot;]::drop-down {
+    subcontrol-origin: padding;
+    subcontrol-position: top right;
+    width: 15px;
+    border-left-style: solid;
+    border-left-color: darkgray;
+    border-left-width: 1px;
+}
+
+QComboBox[editable=&quot;false&quot;]::down-arrow {
+    subcontrol-origin: content;
+    subcontrol-position: center;
+    position: relative;
+    left: 1px; /* 1 pixel dropdown border */
+}
+
+/* The combobox arrow is on when the popup is open. */
+QComboBox[editable=&quot;false&quot;]::down-arrow:on {
+    position: relative;
+    top: 1px;
+    left: 2px;
+}
+
+/* Customize editable comboboxes. */
+
+QComboBox[editable=&quot;true&quot;] {
+    padding-right: 16px;
+}
+
+QComboBox[editable=&quot;true&quot;]::drop-down {
+    subcontrol-origin: border;
+    subcontrol-position: top right;
+    width: 13px;
+    position: absolute;
+    top: 2px;
+    bottom: 2px;
+    right: 2px;
+}
+
+QComboBox[editable=&quot;true&quot;]::drop-down,
+QComboBox[editable=&quot;true&quot;]::drop-down:hover,
+QComboBox[editable=&quot;true&quot;]::drop-down:on {
+    border-width: 0px;  
+    border-left-width: 3px; /* we need only left and center part */
+}
+
+/* Shift the arrow when it's open. */
+QComboBox[editable=&quot;true&quot;]::down-arrow:on {
+    position: relative;
+    top: 1px;
+    left: 1px;
+}
+
+/* Customize check boxes. */
+QCheckBox {
+    spacing: 5px;
+}
+
+QCheckBox::indicator {
+    width: 13px;
+    height: 13px;
+}
+
+QCheckBox::indicator:unchecked {
+    image: url(images/checkbox_unchecked.png);
+}
+
+QCheckBox::indicator:unchecked:hover {
+    image: url(images/checkbox_unchecked_hover.png);
+}
+
+QCheckBox::indicator:unchecked:pressed {
+    image: url(images/checkbox_unchecked_pressed.png);
+}
+
+QCheckBox::indicator:checked {
+    image: url(images/checkbox_checked.png);
+}
+
+QCheckBox::indicator:checked:hover {
+    image: url(images/checkbox_checked_hover.png);
+}
+
+QCheckBox::indicator:checked:pressed {
+    image: url(images/checkbox_checked_pressed.png);
+}
+
+/* Customize the size grip. */
+QSizeGrip {
+    image: url(images/sizegrip.png);
+    width: 16px;
+    height: 16px;
+}
+
+/* Customize the menu bar. */
+QMenuBar {
+    border-image: none;
+    border-style: none;
+    border-width: 1px;
+    border-bottom-style: solid;
+    border-bottom-color: darkslategray;
+    padding: 2px;
+}
+
+/* Customize spin boxes. */
+
+QSpinBox { 
+    padding-right: 15px;
+}
+
+QSpinBox::up-button {
+    subcontrol-origin: border;
+    subcontrol-position: top right;
+
+    width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
+    border-image: url(images/spinup.png) 1;
+    border-width: 1px;
+}
+
+QSpinBox::up-button:hover {
+    border-image: url(images/spinup_hover.png) 1;
+}
+
+QSpinBox::up-button:pressed {
+    border-image: url(images/spinup_pressed.png) 1;
+}
+
+QSpinBox::down-button {
+    subcontrol-origin: border;
+    subcontrol-position: bottom right;
+
+    width: 16px;
+    border-image: url(images/spindown.png) 1;
+    border-width: 1px;
+    border-top-width: 0;
+}
+
+QSpinBox::down-button:hover {
+    border-image: url(images/spindown_hover.png) 1;
+}
+
+QSpinBox::down-button:pressed {
+    border-image: url(images/spindown_pressed.png) 1;
+}
+</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QVBoxLayout">
+    <property name="spacing">
+     <number>6</number>
+    </property>
+    <property name="margin">
+     <number>9</number>
+    </property>
+    <item>
+     <widget class="QFrame" name="mainFrame">
+      <property name="frameShape">
+       <enum>QFrame::StyledPanel</enum>
+      </property>
+      <layout class="QGridLayout">
+       <property name="margin">
+        <number>9</number>
+       </property>
+       <property name="spacing">
+        <number>6</number>
+       </property>
+       <item row="6" column="0" colspan="5">
+        <widget class="QCheckBox" name="agreeCheckBox">
+         <property name="toolTip">
+          <string>Please read the LICENSE file before checking</string>
+         </property>
+         <property name="text">
+          <string>I &amp;accept the terms and &amp;conditions</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Profession:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
+         </property>
+         <property name="buddy">
+          <cstring>professionList</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0">
+        <widget class="QLabel" name="nameLabel">
+         <property name="text">
+          <string>&amp;Name:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>nameCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QRadioButton" name="maleRadioButton">
+         <property name="toolTip">
+          <string>Check this if you are male</string>
+         </property>
+         <property name="text">
+          <string>&amp;Male</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="passwordLabel">
+         <property name="text">
+          <string>&amp;Password:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>passwordEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1" colspan="4">
+        <widget class="QComboBox" name="countryCombo">
+         <property name="toolTip">
+          <string>Specify country of origin</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify country of origin</string>
+         </property>
+         <property name="currentIndex">
+          <number>6</number>
+         </property>
+         <item>
+          <property name="text">
+           <string>Egypt</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>France</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Germany</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>India</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Italy</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Norway</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Pakistan</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="ageLabel">
+         <property name="text">
+          <string>&amp;Age:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>ageSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="countryLabel">
+         <property name="text">
+          <string>Country:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="buddy">
+          <cstring>countryCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="genderLabel">
+         <property name="text">
+          <string>Gender:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1" colspan="4">
+        <widget class="QLineEdit" name="passwordEdit">
+         <property name="toolTip">
+          <string>Specify your password</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your password</string>
+         </property>
+         <property name="text">
+          <string>Password</string>
+         </property>
+         <property name="echoMode">
+          <enum>QLineEdit::Password</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" colspan="2">
+        <widget class="QRadioButton" name="femaleRadioButton">
+         <property name="styleSheet">
+          <string>Check this if you are female</string>
+         </property>
+         <property name="text">
+          <string>&amp;Female</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="2">
+        <widget class="QSpinBox" name="ageSpinBox">
+         <property name="toolTip">
+          <string>Specify your age</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your age</string>
+         </property>
+         <property name="minimum">
+          <number>12</number>
+         </property>
+         <property name="value">
+          <number>22</number>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" colspan="4">
+        <widget class="QComboBox" name="nameCombo">
+         <property name="toolTip">
+          <string>Specify your name</string>
+         </property>
+         <property name="editable">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="4">
+        <spacer>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="2" column="3" colspan="2">
+        <spacer>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>61</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="7" column="3" colspan="2">
+        <widget class="QDialogButtonBox" name="buttonBox">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="standardButtons">
+          <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="1" colspan="4">
+        <widget class="QListWidget" name="professionList">
+         <property name="toolTip">
+          <string>Select your profession</string>
+         </property>
+         <property name="statusTip">
+          <string>Specify your name here</string>
+         </property>
+         <property name="whatsThis">
+          <string>Specify your name here</string>
+         </property>
+         <property name="currentRow">
+          <number>0</number>
+         </property>
+         <item>
+          <property name="text">
+           <string>Developer</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Student</string>
+          </property>
+         </item>
+         <item>
+          <property name="text">
+           <string>Fisherman</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>426</width>
+     <height>29</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menu_File">
+    <property name="title">
+     <string>&amp;File</string>
+    </property>
+    <addaction name="editStyleAction"/>
+    <addaction name="separator"/>
+    <addaction name="exitAction"/>
+   </widget>
+   <widget class="QMenu" name="menu_Help">
+    <property name="title">
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="aboutAction"/>
+    <addaction name="aboutQtAction"/>
+   </widget>
+   <addaction name="menu_File"/>
+   <addaction name="menu_Help"/>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <action name="exitAction">
+   <property name="text">
+    <string>&amp;Exit</string>
+   </property>
+  </action>
+  <action name="aboutQtAction">
+   <property name="text">
+    <string>About Qt</string>
+   </property>
+  </action>
+  <action name="editStyleAction">
+   <property name="text">
+    <string>Edit &amp;Style...</string>
+   </property>
+  </action>
+  <action name="aboutAction">
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_exemple_usage.ui b/tests/auto/uiloader/baseline/css_exemple_usage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0ddd2ed79eabd3f1f7f0de03ed02fb04e7eed56b
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_exemple_usage.ui
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>322</width>
+    <height>203</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">   QPushButton#evilButton {
+             background-color: red;
+             border-style: outset;
+             border-width: 2px;
+             border-radius: 10px;
+             border-color: beige;
+             font: bold 14px;
+             min-width: 10em;
+             padding: 6px;
+         }
+         QPushButton#evilButton:pressed {
+             background-color: rgb(224, 0, 0);
+             border-style: inset;
+         }
+
+QLineEdit { color: red }
+         QLineEdit[readOnly=&quot;true&quot;] { color: gray }
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QPushButton" name="evilButton">
+     <property name="text">
+      <string>Format C:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>95</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLineEdit" name="lineEdit">
+     <property name="text">
+      <string>Foo</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLineEdit" name="lineEdit_2">
+     <property name="text">
+      <string>ReadOnly</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>102</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_frames.ui b/tests/auto/uiloader/baseline/css_frames.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d1397bb1dea32386d14d50d12fc9b89f56f46997
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_frames.ui
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>884</width>
+    <height>327</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"> QLabel
+{
+   border: 2px dashed rgb(0, 85, 255)
+}
+
+QGroupBox  .QFrame { 
+margin: 20px 10px 5px 0px;
+padding: 0px 10px 15px 20px;
+}
+
+QGroupBox {
+border: 5px solid white;
+}
+
+#line1 { background-color: yellow; }
+#line2 { background-color: pink; }
+#line1, #line2 {
+	border: 1px solid rgb(170, 85, 255);
+}
+
+
+QFrame::no-frame {
+  background: orange;
+ border-color: #000;
+ }
+
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="flat">
+      <bool>false</bool>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_7">
+        <item>
+         <widget class="QFrame" name="frame">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_3">
+           <item>
+            <widget class="QLabel" name="label_2">
+             <property name="text">
+              <string>Styled</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_8">
+        <item>
+         <widget class="QFrame" name="frame_2">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_2">
+           <item>
+            <widget class="QLabel" name="label_3">
+             <property name="text">
+              <string>Box</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_9">
+        <item>
+         <widget class="QFrame" name="frame_6">
+          <property name="frameShape">
+           <enum>QFrame::NoFrame</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_6">
+           <item>
+            <widget class="QLabel" name="label_7">
+             <property name="text">
+              <string>None</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_10">
+        <item>
+         <widget class="QFrame" name="frame_4">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout">
+           <item>
+            <widget class="QLabel" name="label_5">
+             <property name="text">
+              <string>Box Plain</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_4">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_11">
+        <item>
+         <widget class="QFrame" name="frame_3">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_4">
+           <item>
+            <widget class="QLabel" name="label_4">
+             <property name="text">
+              <string>Panel</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_5">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_12">
+        <item>
+         <widget class="QFrame" name="frame_5">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Sunken</enum>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_5">
+           <item>
+            <widget class="QLabel" name="label_6">
+             <property name="text">
+              <string>WinPanel</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_6">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="Line" name="line2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="Line" name="line1">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QLabel" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="lineWidth">
+      <number>0</number>
+     </property>
+     <property name="text">
+      <string>This test that all the frame style can handle margins and paddings correctly 
+ (and the background of this label should be orange)</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_groupboxes.ui b/tests/auto/uiloader/baseline/css_groupboxes.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7f5464aa5eca0b6214b1849475cdab76b30e1901
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_groupboxes.ui
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">#groupBox_1:checked { color:magenta; }
+
+#groupBox_2 { background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255));
+color: rgb(33, 255, 181);  }
+
+#groupBox_3 { padding: 20px;  margin: 20px; }
+#groupBox_3 QLabel { background-color: #46e; }
+
+#groupBox_4::title { subcontrol-position: bottom left; border: 1px solid white;}
+
+#groupBox_5::indicator {border: 1px solid white;}
+
+#groupBox_6 { border: 5px dashed pink;}</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox_1">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_4">
+      <item>
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QGroupBox" name="groupBox_3">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QGroupBox" name="groupBox_4">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_5">
+      <item>
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QGroupBox" name="groupBox_5">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <item>
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QGroupBox" name="groupBox_6">
+     <property name="title">
+      <string>GroupBox</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_6">
+      <item>
+       <widget class="QLabel" name="label_4">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_itemview_task258382.ui b/tests/auto/uiloader/baseline/css_itemview_task258382.ui
new file mode 100644
index 0000000000000000000000000000000000000000..11c56b4ba2837131cdff3108440e2da04fb78c46
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_itemview_task258382.ui
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>437</width>
+    <height>352</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">::item { border: 1px solid black;  background-color: purple; }
+::item {margin-left: 20px; }
+
+QAbstractItemView { selection-background-color: red;
+show-decoration- selected: 0;
+ }
+
+::item:selected {  background-color: yellow; }</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QTreeWidget" name="treeWidget">
+     <column>
+      <property name="text">
+       <string>1</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+      <item>
+       <property name="text">
+        <string>New Subitem</string>
+       </property>
+       <item>
+        <property name="text">
+         <string>New Subitem</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>New Item</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>New Item</string>
+        </property>
+       </item>
+      </item>
+     </item>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QTableWidget" name="tableWidget">
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <item row="0" column="0">
+      <property name="text">
+       <string>mljkh mh mjl</string>
+      </property>
+     </item>
+     <item row="0" column="1">
+      <property name="text">
+       <string>h jlh mjklh </string>
+      </property>
+     </item>
+     <item row="0" column="2">
+      <property name="text">
+       <string>mjklh mlhj mjlh m</string>
+      </property>
+     </item>
+     <item row="1" column="3">
+      <property name="text">
+       <string>mlhj lmhj </string>
+      </property>
+     </item>
+     <item row="2" column="0">
+      <property name="text">
+       <string>mlkj l</string>
+      </property>
+     </item>
+     <item row="2" column="1">
+      <property name="text">
+       <string>mlkj </string>
+      </property>
+     </item>
+     <item row="2" column="2">
+      <property name="text">
+       <string>mlkj lmkj </string>
+      </property>
+     </item>
+     <item row="2" column="3">
+      <property name="text">
+       <string>mlkhj mlh</string>
+      </property>
+     </item>
+     <item row="3" column="1">
+      <property name="text">
+       <string>mlkj lmkj </string>
+      </property>
+     </item>
+     <item row="4" column="0">
+      <property name="text">
+       <string>mlkj lmkj </string>
+      </property>
+     </item>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_qprogressbar.ui b/tests/auto/uiloader/baseline/css_qprogressbar.ui
new file mode 100644
index 0000000000000000000000000000000000000000..6b3e2f0e9ed6643e3d2791bf8b57038621fe23eb
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_qprogressbar.ui
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>326</width>
+    <height>170</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QProgressBar" name="progressBar">
+     <property name="styleSheet">
+      <string notr="true"> QProgressBar {
+             border: 2px solid grey;
+             border-radius: 5px;
+         }
+
+         QProgressBar::chunk {
+             background-color: #05B8CC;
+             width: 20px;
+         }
+
+ QProgressBar {
+         border: 2px solid grey;
+         border-radius: 5px;
+         text-align: center;
+     }</string>
+     </property>
+     <property name="value">
+      <number>24</number>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QProgressBar" name="progressBar_2">
+     <property name="styleSheet">
+      <string notr="true">   QProgressBar::chunk {
+         background-color: #CD96CD;
+         width: 10px;
+         margin: 0.5px;
+     }
+
+     QProgressBar {
+         border: 2px solid grey;
+         border-radius: 5px;
+         text-align: center;
+     }</string>
+     </property>
+     <property name="value">
+      <number>24</number>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QProgressBar" name="progressBar_3">
+     <property name="styleSheet">
+      <string notr="true">QProgressBar:horizontal {border: 1px solid gray; border-radius: 3px; background: white; padding: 1px; }
+	QProgressBar::chunk:horizontal { background: qlineargradient(x1: 0, y1: 0.5, x2: 1, y2: 0.5, stop: 0 green, stop: 1  lightgrey);}</string>
+     </property>
+     <property name="minimum">
+      <number>25</number>
+     </property>
+     <property name="maximum">
+      <number>100</number>
+     </property>
+     <property name="value">
+      <number>75</number>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QProgressBar" name="progressBar_4">
+     <property name="styleSheet">
+      <string notr="true">
+
+         QProgressBar::chunk {
+background:
+qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, 
+stop:0 rgba(0, 0, 0,0), stop:0.5 rgba(235, 148, 61, 255), stop:1 rgba(0, 0, 0, 0))   ;         
+
+  width: 100px;
+
+         }
+
+ QProgressBar {
+         border: 2px dashed grey;
+         border-radius: 5px;
+     }</string>
+     </property>
+     <property name="minimum">
+      <number>0</number>
+     </property>
+     <property name="maximum">
+      <number>0</number>
+     </property>
+     <property name="value">
+      <number>-1</number>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>41</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_qtabwidget.ui b/tests/auto/uiloader/baseline/css_qtabwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7c2d24f3af1cdaf78a74630e7aa5ecf7012b9826
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_qtabwidget.ui
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTabWidget" name="tabWidget">
+     <property name="styleSheet">
+      <string notr="true"> QTabWidget::pane { / * The tab widget frame * /
+             border-top: 2px solid #C2C7CB;
+         }
+
+         QTabWidget::tab-bar {
+             left: 5px; / * move to the right by 5px * /
+         }
+
+         / * Style the tab using the tab sub-control. Note that
+             it reads QTabBar _not_ QTabWidget * /
+         QTabBar::tab {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+                                         stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+             border: 2px solid #C4C4C3;
+             border-bottom-color: #C2C7CB; / * same as the pane color * /
+             border-top-left-radius: 4px;
+             border-top-right-radius: 4px;
+             min-width: 8ex;
+             padding: 2px;
+         }
+
+         QTabBar::tab:selected, QTabBar::tab:hover {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+                                         stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
+         }
+
+         QTabBar::tab:selected {
+             border-color: #9B9B9B;
+             border-bottom-color: #C2C7CB; / * same as pane color * /
+         }
+
+         QTabBar::tab:!selected {
+             margin-top: 2px; / * make non-selected tabs look smaller * /
+         }
+
+
+</string>
+     </property>
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_3">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string/>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget_2">
+     <property name="styleSheet">
+      <string notr="true">QTabWidget::pane { / * The tab widget frame * /
+             border-top: 2px solid #C2C7CB;
+         }
+
+         QTabWidget::tab-bar {
+             left: 5px; / * move to the right by 5px * /
+         }
+
+         / * Style the tab using the tab sub-control. Note that
+             it reads QTabBar _not_ QTabWidget * /
+         QTabBar::tab {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+                                         stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+             border: 2px solid #C4C4C3;
+             border-bottom-color: #C2C7CB; / * same as the pane color * /
+             border-top-left-radius: 4px;
+             border-top-right-radius: 4px;
+             min-width: 8ex;
+             padding: 2px;
+         }
+
+         QTabBar::tab:selected, QTabBar::tab:hover {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+                                         stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
+         }
+
+         QTabBar::tab:selected {
+             border-color: #9B9B9B;
+             border-bottom-color: #C2C7CB; / * same as pane color * /
+         }
+
+         QTabBar::tab:!selected {
+             margin-top: 2px; / * make non-selected tabs look smaller * /
+         }
+
+         / * make use of negative margins for overlapping tabs * /
+         QTabBar::tab:selected {
+             / * expand/overlap to the left and right by 4px * /
+             margin-left: -4px;
+             margin-right: -4px;
+         }
+
+         QTabBar::tab:first:selected {
+             margin-left: 0; / * the first selected tab has nothing to overlap with on the left * /
+         }
+
+         QTabBar::tab:last:selected {
+             margin-right: 0; / * the last selected tab has nothing to overlap with on the right * /
+         }
+
+         QTabBar::tab:only-one {
+             margin: 0; / * if there is only one tab, we don't want overlapping margins * /
+         }</string>
+     </property>
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="tab_4">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_7">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_5">
+      <attribute name="title">
+       <string/>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget_3">
+     <property name="styleSheet">
+      <string notr="true"> QTabWidget::pane { / * The tab widget frame * /
+             border-top: 2px solid #C2C7CB;
+             position: absolute;
+             top: -0.5em;
+         }
+
+         QTabWidget::tab-bar {
+             alignment: center;
+         }
+
+         / * Style the tab using the tab sub-control. Note that
+             it reads QTabBar _not_ QTabWidget * /
+         QTabBar::tab {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+                                         stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+             border: 2px solid #C4C4C3;
+             border-bottom-color: #C2C7CB; / * same as the pane color * /
+             border-top-left-radius: 4px;
+             border-top-right-radius: 4px;
+             min-width: 8ex;
+             padding: 2px;
+         }
+
+         QTabBar::tab:selected, QTabBar::tab:hover {
+             background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                         stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+                                         stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
+         }
+
+         QTabBar::tab:selected {
+             border-color: #9B9B9B;
+             border-bottom-color: #C2C7CB; / * same as pane color * /
+         }</string>
+     </property>
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="tab_6">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_9">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_8">
+      <attribute name="title">
+       <string/>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_qtbug6855.ui b/tests/auto/uiloader/baseline/css_qtbug6855.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0727f6ba99f094cdbd5f9daac73ba9d9886121b8
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_qtbug6855.ui
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>212</width>
+    <height>108</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QPushButton { padding: 20px; }</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QPushButton" name="pushButton">
+     <property name="text">
+      <string>Text not cropped</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>258</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>218</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui
new file mode 100644
index 0000000000000000000000000000000000000000..089cb76a1ed8d746a4f444c35a56fb4ec24f0f01
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>207</width>
+    <height>69</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QPushButton { border-image: url(&quot;images/pushbutton.png&quot;) 5 5 5 5; border-radius:8px; }</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QPushButton" name="pushButton">
+     <property name="text">
+      <string>Border image and radius</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_scroll.ui b/tests/auto/uiloader/baseline/css_scroll.ui
new file mode 100644
index 0000000000000000000000000000000000000000..6ac688604f04efaf099022ccde5012c40312babe
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_scroll.ui
@@ -0,0 +1,601 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>393</width>
+    <height>347</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QScrollArea { background:red; 
+ border: 5px dashed blue; }
+QScrollArea .QWidget { background:transparent; 
+  border: 5px dotted green;}
+QScrollArea::corner { background:yellow; }
+
+
+   QScrollBar:horizontal {
+             border: 2px solid green;
+             background: cyan;
+             height: 15px;
+             margin: 0px 40px 0 0px;
+         }
+
+       QScrollBar::handle:horizontal {
+             background: gray;
+             min-width: 20px;
+         }
+
+         QScrollBar::add-line:horizontal {
+             background: blue;
+             width: 16px;
+             subcontrol-position: right;
+             subcontrol-origin: margin;
+             border: 2px solid black;
+         }
+
+         QScrollBar::sub-line:horizontal {
+             background: magenta;
+             width: 16px;
+             subcontrol-position: top right;
+             subcontrol-origin: margin;
+             border: 2px solid black;
+             position: absolute;
+             right: 20px;
+         }
+
+         QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal {
+             width: 3px;
+             height: 3px;
+             background: pink;
+         }
+
+         QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
+             background: none;
+         }
+
+
+
+  QScrollBar:vertical {
+             border: 2px solid grey;
+             background: #32CC99;
+             width: 15px;
+             margin: 20px 0px 20px 0px;
+         }
+ QScrollBar::handle:vertical {
+             background: white;
+             min-height: 20px;
+         }
+         QScrollBar::add-line:vertical {
+             border: 2px solid grey;
+             background: #32CC99;
+             height: 20px;
+             subcontrol-position: bottom;
+             subcontrol-origin: margin;
+         }
+
+         QScrollBar::sub-line:vertical {
+             border: 2px solid grey;
+             background: #32CC99;
+             height: 20px;
+             subcontrol-position: top;
+             subcontrol-origin: margin;
+         }
+
+    QScrollBar:left-arrow:vertical, QScrollBar::right-arrow:vertical {
+             border: 2px solid grey;
+             width: 3px;
+             height: 3px;
+             background: white;
+         }
+
+         QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
+             background: none;
+         }
+
+
+
+</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_8">
+   <item>
+    <widget class="QScrollArea" name="scrollArea">
+     <property name="widgetResizable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>520</width>
+        <height>532</height>
+       </rect>
+      </property>
+      <layout class="QGridLayout" name="gridLayout_3">
+       <item row="0" column="0">
+        <widget class="QGroupBox" name="groupBox_4">
+         <property name="title">
+          <string>GroupBox</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_4">
+          <item row="0" column="0">
+           <widget class="QRadioButton" name="radioButton_56">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QRadioButton" name="radioButton_83">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <widget class="QRadioButton" name="radioButton_82">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="QRadioButton" name="radioButton_84">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0">
+           <widget class="QRadioButton" name="radioButton_57">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="QRadioButton" name="radioButton_62">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0">
+           <widget class="QRadioButton" name="radioButton_59">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="QRadioButton" name="radioButton_55">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0">
+           <widget class="QRadioButton" name="radioButton_60">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="QRadioButton" name="radioButton_61">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0">
+           <widget class="QRadioButton" name="radioButton_58">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1">
+           <widget class="QRadioButton" name="radioButton_63">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="0">
+           <spacer name="verticalSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>81</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="1">
+        <widget class="QGroupBox" name="groupBox_5">
+         <property name="title">
+          <string>GroupBox</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_7">
+          <item>
+           <widget class="QRadioButton" name="radioButton_64">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_65">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_66">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_67">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_68">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_69">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_70">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_71">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_72">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="2">
+        <widget class="QGroupBox" name="groupBox_6">
+         <property name="title">
+          <string>GroupBox</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_3">
+          <item>
+           <widget class="QRadioButton" name="radioButton_73">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_74">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_75">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_76">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_77">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_78">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_79">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_80">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="radioButton_81">
+            <property name="text">
+             <string>RadioButton</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="0">
+          <widget class="QGroupBox" name="groupBox">
+           <property name="title">
+            <string>GroupBox</string>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <item>
+             <widget class="QRadioButton" name="radioButton_9">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_6">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_7">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_3">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_5">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_4">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_8">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_2">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QGroupBox" name="groupBox_2">
+           <property name="title">
+            <string>GroupBox</string>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayout">
+            <item>
+             <widget class="QRadioButton" name="radioButton_10">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_11">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_12">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_13">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_14">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_15">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_16">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_17">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="radioButton_18">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+         <item row="0" column="2">
+          <widget class="QGroupBox" name="groupBox_3">
+           <property name="title">
+            <string>GroupBox</string>
+           </property>
+           <layout class="QGridLayout" name="gridLayout">
+            <item row="0" column="0">
+             <widget class="QRadioButton" name="radioButton_19">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QRadioButton" name="radioButton_20">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="0">
+             <widget class="QRadioButton" name="radioButton_21">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0">
+             <widget class="QRadioButton" name="radioButton_22">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="4" column="0">
+             <widget class="QRadioButton" name="radioButton_23">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="5" column="0">
+             <widget class="QRadioButton" name="radioButton_24">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="6" column="0">
+             <widget class="QRadioButton" name="radioButton_25">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="7" column="0">
+             <widget class="QRadioButton" name="radioButton_26">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+            <item row="8" column="0">
+             <widget class="QRadioButton" name="radioButton_27">
+              <property name="text">
+               <string>RadioButton</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_scrollarea_base.ui b/tests/auto/uiloader/baseline/css_scrollarea_base.ui
new file mode 100644
index 0000000000000000000000000000000000000000..495401f4079b8573e8a12ded688ffe67c4926f59
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_scrollarea_base.ui
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>407</width>
+    <height>339</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QAbstractScrollArea { border: 2px dashed #e12; }
+QHeaderView { border-color: blue; }
+
+</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QPlainTextEdit" name="plainTextEdit">
+     <property name="plainText">
+      <string>Note that the task 257517 requires to scroll down, and check that the backgroud is still filled with the base color (white by default)
+
+x
+x
+
+x
+x
+
+x
+x
+
+x
+x
+
+</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTableWidget" name="tableWidget">
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <row>
+      <property name="text">
+       <string>New Row</string>
+      </property>
+     </row>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>New Column</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTextEdit" name="textEdit">
+     <property name="html">
+      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;x&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_splitter.ui b/tests/auto/uiloader/baseline/css_splitter.ui
new file mode 100644
index 0000000000000000000000000000000000000000..99dbc180a9542c6077e064164830b6fa47ca855d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_splitter.ui
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>424</width>
+    <height>364</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"> QSplitter::handle:vertical {
+     image: url(images/splitter_horizontal.png);
+ }
+
+ QSplitter::handle:horizontal {
+     image: url(images/splitter_vertical.png);
+ }
+
+#big_splitter::handle { background-color: blue;  border: 3px dashed  green; height:50px; }
+
+
+ QSplitter::handle:hover {
+   background-color:  qlineargradient(spread:repeat, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:0.17 rgba(255, 0, 0, 255), stop:0.18 rgba(255, 255, 255, 255), stop:0.210212 rgba(255, 255, 255, 255), stop:0.220212 rgba(0, 16, 255, 255), stop:0.279897 rgba(0, 16, 255, 255), stop:0.289897 rgba(255, 255, 255, 255), stop:0.32 rgba(255, 255, 255, 255), stop:0.33 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))
+ }
+
+ QSplitter::handle:pressed {
+	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(9, 41, 4, 255), stop:0.085 rgba(2, 79, 0, 255), stop:0.19 rgba(50, 147, 22, 255), stop:0.275 rgba(236, 191, 49, 255), stop:0.39 rgba(243, 61, 34, 255), stop:0.555 rgba(135, 81, 60, 255), stop:0.667 rgba(121, 75, 255, 255), stop:0.825 rgba(164, 255, 244, 255), stop:0.885 rgba(104, 222, 71, 255), stop:1 rgba(93, 128, 0, 255));
+ }</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QSplitter" name="splitter_3">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QSplitter" name="big_splitter">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
+      </property>
+      <widget class="QTextEdit" name="textEdit"/>
+      <widget class="QTextEdit" name="textEdit_5"/>
+      <widget class="QTextEdit" name="textEdit_4"/>
+     </widget>
+     <widget class="QSplitter" name="splitter">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
+      </property>
+      <widget class="QTextEdit" name="textEdit_2"/>
+      <widget class="QTextEdit" name="textEdit_3"/>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_tab_border.ui b/tests/auto/uiloader/baseline/css_tab_border.ui
new file mode 100644
index 0000000000000000000000000000000000000000..cefb9d8fd91131b8b3ea4d43cca19721e08a56ec
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_tab_border.ui
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>379</width>
+    <height>277</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">#tabWidget QTabBar::tab {
+     background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+                                 stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+                                 stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+     border: 2px solid #C4C4C3;
+     border-bottom-color: #C2C7CB; /* same as the pane color */
+     border-top-left-radius: 4px;
+     border-top-right-radius: 4px;
+     padding: 2px;
+ }
+
+#tabWidget_2 QTabBar::tab {
+     border: 3px solid red;
+ }
+
+#tabWidget_3 QTabBar::tab {
+     margin: 5px;
+ }
+
+
+</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTabWidget" name="tabWidget">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <property name="tabsClosable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget_2">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <property name="tabsClosable">
+      <bool>false</bool>
+     </property>
+     <widget class="QWidget" name="tab_3">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_4">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget_3">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <property name="tabsClosable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="tab_5">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_6">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_tab_closebutton.ui b/tests/auto/uiloader/baseline/css_tab_closebutton.ui
new file mode 100644
index 0000000000000000000000000000000000000000..82bd2b55021db343d71d71c8803fe3c2f106fea5
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_tab_closebutton.ui
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">*{}
+
+#tabWidget QTabBar::close-button
+{
+   background: blue;
+   border: 2px dotted red;
+   subcontrol-position: top;
+}
+
+
+#tabWidget_2 QTabBar::close-button
+{
+   image: url(images/checkbox_checked.png);
+   subcontrol-position: left;
+}
+
+#tabWidget_2 QTabBar::close-button:hover
+{
+   image: url(images/checkbox_unchecked_hover.png);
+}
+
+
+#tabWidget_3 QTabBar::close-button
+{
+   border-image: url(images/pushbutton.png) 3px;
+  border-width:3px;
+}
+
+
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QTabWidget" name="tabWidget">
+     <property name="tabsClosable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_2">
+       <item row="0" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Test the close button in the tabbar</string>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item row="0" column="1" rowspan="2">
+    <widget class="QTabWidget" name="tabWidget_3">
+     <property name="tabPosition">
+      <enum>QTabWidget::East</enum>
+     </property>
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <property name="tabsClosable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="tab_5">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_6">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QTabWidget" name="tabWidget_2">
+     <property name="tabPosition">
+      <enum>QTabWidget::South</enum>
+     </property>
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <property name="tabsClosable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="tab_3">
+      <attribute name="title">
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_4">
+      <attribute name="title">
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_tab_task213374.ui b/tests/auto/uiloader/baseline/css_tab_task213374.ui
new file mode 100644
index 0000000000000000000000000000000000000000..f3567aede0528f8656008a4ecf0635d1a216b8de
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_tab_task213374.ui
@@ -0,0 +1,306 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>646</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QTabWidget" name="tabWidget_2" >
+     <property name="styleSheet" >
+      <string>
+QTabBar::tab:bottom {
+	
+	min-width: 15px;
+	padding: 3px 15px 3px 10px;
+	border: 1px solid  #7f7f7f;
+	
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 35px 21px;
+	
+}
+QTabBar::tab:left {
+	padding: 10px 3px 15px 3px;
+	border: 1px solid  #7f7f7f;
+	border-left-width: 0px;
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 21px 35px;
+	margin-right: 2px;
+}
+QTabBar:right {subcontrol-origin: padding;}
+QTabBar::tab:right {
+	padding: 10px 3px 15px 5px;
+	border: 1px solid  #7f7f7f;
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-left-radius: 21px 35px;
+	margin-left: 2px;
+}
+QTabBar::tab:bottom:!last { margin-right: -10px;}
+QTabBar::tab:left:!last { margin-bottom: -10px;}
+QTabBar::tab:right:!last { margin-bottom: -10px;}
+
+QTabBar::tab:bottom:selected {
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+							stop: .3  #CFCFCF, stop: 1 #FFFFFF);
+}
+QTabBar::tab:left:selected {
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+QTabBar::tab:right:selected {
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+
+
+</string>
+     </property>
+     <property name="tabPosition" >
+      <enum>QTabWidget::South</enum>
+     </property>
+     <property name="currentIndex" >
+      <number>3</number>
+     </property>
+     <widget class="QWidget" name="tab_5" >
+      <attribute name="title" >
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_6" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_7" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_8" >
+      <attribute name="title" >
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget_3" >
+     <property name="styleSheet" >
+      <string>
+QTabBar::tab:bottom {
+	
+	min-width: 15px;
+	padding: 3px 15px 3px 10px;
+	border: 1px solid  #7f7f7f;
+	
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 35px 21px;
+	
+}
+QTabBar::tab:left {
+	padding: 10px 3px 15px 3px;
+	border: 1px solid  #7f7f7f;
+	border-left-width: 0px;
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 21px 35px;
+	margin-right: 2px;
+}
+QTabBar:right {subcontrol-origin: padding;}
+QTabBar::tab:right {
+	padding: 10px 3px 15px 5px;
+	border: 1px solid  #7f7f7f;
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-left-radius: 21px 35px;
+	margin-left: 2px;
+}
+QTabBar::tab:bottom:!last { margin-right: -10px;}
+QTabBar::tab:left:!last { margin-bottom: -10px;}
+QTabBar::tab:right:!last { margin-bottom: -10px;}
+
+QTabBar::tab:bottom:selected {
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+							stop: .3  #CFCFCF, stop: 1 #FFFFFF);
+}
+QTabBar::tab:left:selected {
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+QTabBar::tab:right:selected {
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+
+
+</string>
+     </property>
+     <property name="tabPosition" >
+      <enum>QTabWidget::East</enum>
+     </property>
+     <property name="currentIndex" >
+      <number>3</number>
+     </property>
+     <widget class="QWidget" name="tab_9" >
+      <attribute name="title" >
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_10" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_11" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_12" >
+      <attribute name="title" >
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTabWidget" name="tabWidget" >
+     <property name="styleSheet" >
+      <string>
+QTabBar::tab:bottom {
+	
+	min-width: 15px;
+	padding: 3px 15px 3px 10px;
+	border: 1px solid  #7f7f7f;
+	
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 35px 21px;
+	
+}
+QTabBar::tab:left {
+	padding: 10px 3px 15px 3px;
+	border: 1px solid  #7f7f7f;
+	border-left-width: 0px;
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-right-radius: 21px 35px;
+	margin-right: 2px;
+}
+QTabBar:right {subcontrol-origin: padding;}
+QTabBar::tab:right {
+	padding: 10px 3px 15px 5px;
+	border: 1px solid  #7f7f7f;
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+								stop: .3  #FFFFFF, stop: 1 #909090);
+	border-bottom-left-radius: 21px 35px;
+	margin-left: 2px;
+}
+QTabBar::tab:bottom:!last { margin-right: -10px;}
+QTabBar::tab:left:!last { margin-bottom: -10px;}
+QTabBar::tab:right:!last { margin-bottom: -10px;}
+
+QTabBar::tab:bottom:selected {
+	background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, 
+							stop: .3  #CFCFCF, stop: 1 #FFFFFF);
+}
+QTabBar::tab:left:selected {
+	background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+QTabBar::tab:right:selected {
+	background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, 
+							stop: .3  #DFDFDF, stop: 1 #F0F0F0);
+}
+
+
+</string>
+     </property>
+     <property name="tabPosition" >
+      <enum>QTabWidget::West</enum>
+     </property>
+     <property name="currentIndex" >
+      <number>3</number>
+     </property>
+     <widget class="QWidget" name="tab" >
+      <attribute name="title" >
+       <string>Tab 1</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_4" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_3" >
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+     </widget>
+     <widget class="QWidget" name="tab_2" >
+      <attribute name="title" >
+       <string>Tab 2</string>
+      </attribute>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_task255849_downarrow.ui b/tests/auto/uiloader/baseline/css_task255849_downarrow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d3e99b161304c1cd9ce405f2aa239165451407c8
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_task255849_downarrow.ui
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>275</width>
+    <height>175</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">/*  Some widget were not displaying the arrow if only the arrow was set */
+*::down-arrow { image: url(&quot;images/arrow-down.png&quot;) }
+*::up-arrow { image: url(&quot;images/arrow-up.png&quot;) }
+
+
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="2">
+    <widget class="QComboBox" name="comboBox"/>
+   </item>
+   <item row="0" column="2" rowspan="5">
+    <widget class="QTreeWidget" name="treeWidget">
+     <property name="sortingEnabled">
+      <bool>true</bool>
+     </property>
+     <attribute name="headerShowSortIndicator" stdset="0">
+      <bool>true</bool>
+     </attribute>
+     <attribute name="headerShowSortIndicator" stdset="0">
+      <bool>true</bool>
+     </attribute>
+     <column>
+      <property name="text">
+       <string>1</string>
+      </property>
+     </column>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>New Item</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QSpinBox" name="spinBox"/>
+   </item>
+   <item row="1" column="1">
+    <widget class="QToolButton" name="toolButton">
+     <property name="text">
+      <string>foo</string>
+     </property>
+     <property name="arrowType">
+      <enum>Qt::DownArrow</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QDoubleSpinBox" name="doubleSpinBox"/>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <widget class="QPushButton" name="pushButton">
+     <property name="contextMenuPolicy">
+      <enum>Qt::NoContextMenu</enum>
+     </property>
+     <property name="text">
+      <string>PushButton</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui b/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui
new file mode 100644
index 0000000000000000000000000000000000000000..eb9ade316cee9e74854b2cf8da90c4976b9decf2
--- /dev/null
+++ b/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>320</width>
+    <height>116</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">#spinbox1::up-button{
+    subcontrol-origin: border;
+    subcontrol-position: top left; 
+  }
+#spinbox1::down-button {
+    subcontrol-origin: border;
+     subcontrol-position: bottom left; 
+  }
+
+
+#spinbox2::up-button{
+    subcontrol-origin: border;
+    subcontrol-position: center left; 
+    left: 0px;
+    height: 100%;
+    top: 0px;
+  }
+#spinbox2::down-button {
+    subcontrol-origin: border;
+    subcontrol-position: center right; 
+    right: 0px;
+    height: 100%;
+    top: 0px;
+  }
+
+
+
+#spinbox3::up-button{
+    subcontrol-origin: border;
+     subcontrol-position: top left; 
+  }
+
+
+#spinbox4 { padding: 20px 1px; }
+#spinbox4::up-button{
+    subcontrol-origin: border;
+    subcontrol-position: top center; 
+   width:100%;
+   height:  20px;
+  }
+#spinbox4::down-button {
+    subcontrol-origin: border;
+    subcontrol-position: bottom center; 
+   width:100%;
+   height:  20px;
+  }
+
+</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QSpinBox" name="spinbox1"/>
+   </item>
+   <item row="0" column="1">
+    <widget class="QSpinBox" name="spinbox2"/>
+   </item>
+   <item row="1" column="0">
+    <widget class="QSpinBox" name="spinbox3"/>
+   </item>
+   <item row="1" column="1">
+    <widget class="QSpinBox" name="spinbox4"/>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/default.ui b/tests/auto/uiloader/baseline/default.ui
new file mode 100644
index 0000000000000000000000000000000000000000..431a40956e4451069e5afe5832560b9eab3a5923
--- /dev/null
+++ b/tests/auto/uiloader/baseline/default.ui
@@ -0,0 +1,329 @@
+<ui version="4.0" >
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>388</width>
+    <height>413</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <layout class="QGridLayout" >
+    <property name="margin" >
+     <number>9</number>
+    </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <item row="0" column="0" >
+     <widget class="QLabel" name="nameLabel" >
+      <property name="text" >
+       <string>&amp;Name:</string>
+      </property>
+      <property name="buddy" >
+       <cstring>nameCombo</cstring>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="1" colspan="3" >
+     <widget class="QComboBox" name="nameCombo" >
+      <property name="toolTip" >
+       <string>Specify your name</string>
+      </property>
+      <property name="editable" >
+       <bool>true</bool>
+      </property>
+      <property name="currentIndex" >
+       <number>-1</number>
+      </property>
+      <item>
+       <property name="text" >
+        <string>Girish</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Jasmin</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Simon</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Zack</string>
+       </property>
+      </item>
+     </widget>
+    </item>
+    <item row="1" column="3" >
+     <spacer>
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="sizeHint" >
+       <size>
+        <width>40</width>
+        <height>20</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+    <item row="1" column="2" >
+     <widget class="QRadioButton" name="femaleRadioButton" >
+      <property name="toolTip" >
+       <string>Check this if you are female</string>
+      </property>
+      <property name="text" >
+       <string>&amp;Female</string>
+      </property>
+     </widget>
+    </item>
+    <item row="6" column="0" colspan="4" >
+     <widget class="QCheckBox" name="agreeCheckBox" >
+      <property name="toolTip" >
+       <string>Please read the license before checking this</string>
+      </property>
+      <property name="text" >
+       <string>I &amp;accept the terms and conditions</string>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="1" >
+     <widget class="QRadioButton" name="maleRadioButton" >
+      <property name="toolTip" >
+       <string>Check this if you are male</string>
+      </property>
+      <property name="text" >
+       <string>&amp;Male</string>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="0" >
+     <widget class="QLabel" name="genderLabel" >
+      <property name="text" >
+       <string>Gender:</string>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="1" colspan="3" >
+     <widget class="QSpinBox" name="ageSpinBox" >
+      <property name="toolTip" >
+       <string>Specify your age</string>
+      </property>
+      <property name="statusTip" >
+       <string>Specify your age here</string>
+      </property>
+      <property name="minimum" >
+       <number>12</number>
+      </property>
+      <property name="value" >
+       <number>22</number>
+      </property>
+     </widget>
+    </item>
+    <item row="7" column="2" colspan="2" >
+     <widget class="QDialogButtonBox" name="buttonBox" >
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="standardButtons" >
+       <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="0" >
+     <widget class="QLabel" name="ageLabel" >
+      <property name="text" >
+       <string>&amp;Age:</string>
+      </property>
+      <property name="buddy" >
+       <cstring>ageSpinBox</cstring>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="0" >
+     <widget class="QLabel" name="passwordLabel" >
+      <property name="text" >
+       <string>&amp;Password:</string>
+      </property>
+      <property name="buddy" >
+       <cstring>passwordEdit</cstring>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="1" colspan="3" >
+     <widget class="QLineEdit" name="passwordEdit" >
+      <property name="toolTip" >
+       <string>Specify your password</string>
+      </property>
+      <property name="statusTip" >
+       <string>Specify your password here</string>
+      </property>
+      <property name="text" >
+       <string>Password</string>
+      </property>
+      <property name="echoMode" >
+       <enum>QLineEdit::Password</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="5" column="0" >
+     <widget class="QLabel" name="label" >
+      <property name="text" >
+       <string>Profession</string>
+      </property>
+      <property name="buddy" >
+       <cstring>professionList</cstring>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="0" >
+     <widget class="QLabel" name="countryLabel" >
+      <property name="text" >
+       <string>&amp;Country</string>
+      </property>
+      <property name="buddy" >
+       <cstring>professionList</cstring>
+      </property>
+     </widget>
+    </item>
+    <item row="5" column="1" colspan="3" >
+     <widget class="QListWidget" name="professionList" >
+      <property name="toolTip" >
+       <string>Select your profession</string>
+      </property>
+      <property name="statusTip" >
+       <string>Select your profession</string>
+      </property>
+      <property name="whatsThis" >
+       <string>Select your profession</string>
+      </property>
+      <property name="currentRow" >
+       <number>1</number>
+      </property>
+      <item>
+       <property name="text" >
+        <string>Developer</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Student</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Fisherman</string>
+       </property>
+      </item>
+     </widget>
+    </item>
+    <item row="4" column="1" colspan="3" >
+     <widget class="QComboBox" name="countryCombo" >
+      <property name="toolTip" >
+       <string>Specify your country</string>
+      </property>
+      <property name="statusTip" >
+       <string>Specify your country here</string>
+      </property>
+      <property name="currentIndex" >
+       <number>2</number>
+      </property>
+      <item>
+       <property name="text" >
+        <string>Germany</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>India</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>Norway</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>United States Of America</string>
+       </property>
+      </item>
+      <item>
+       <property name="text" >
+        <string>United Kingdom</string>
+       </property>
+      </item>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>388</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menu_File" >
+    <property name="title" >
+     <string>&amp;File</string>
+    </property>
+    <addaction name="editStyleAction" />
+    <addaction name="separator" />
+    <addaction name="exitAction" />
+   </widget>
+   <widget class="QMenu" name="menu_Help" >
+    <property name="title" >
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="aboutAction" />
+    <addaction name="separator" />
+    <addaction name="aboutQtAction" />
+   </widget>
+   <addaction name="menu_File" />
+   <addaction name="menu_Help" />
+  </widget>
+  <widget class="QStatusBar" name="statusbar" />
+  <action name="exitAction" >
+   <property name="text" >
+    <string>&amp;Exit</string>
+   </property>
+  </action>
+  <action name="aboutQtAction" >
+   <property name="text" >
+    <string>About Qt</string>
+   </property>
+  </action>
+  <action name="editStyleAction" >
+   <property name="text" >
+    <string>Edit &amp;Style</string>
+   </property>
+  </action>
+  <action name="aboutAction" >
+   <property name="text" >
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <tabstops>
+  <tabstop>maleRadioButton</tabstop>
+  <tabstop>femaleRadioButton</tabstop>
+  <tabstop>ageSpinBox</tabstop>
+  <tabstop>passwordEdit</tabstop>
+  <tabstop>professionList</tabstop>
+  <tabstop>agreeCheckBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/dialog.ui b/tests/auto/uiloader/baseline/dialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..e99d6fb3c42fbccea1bc86635cb0697dad78356c
--- /dev/null
+++ b/tests/auto/uiloader/baseline/dialog.ui
@@ -0,0 +1,47 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>451</width>
+    <height>322</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" >
+    <widget class="QPushButton" name="loadFromFileButton" >
+     <property name="text" >
+      <string>Load Image From File...</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Launch two of these dialogs.  In the first, press the top button and load an image from a file.  In the second, press the bottom button and display the loaded image from shared memory.</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QPushButton" name="loadFromSharedMemoryButton" >
+     <property name="text" >
+      <string>Display Image From Shared Memory</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/downloaditem.ui b/tests/auto/uiloader/baseline/downloaditem.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4a0a0fd9aa45a5ee9f2d659658ef54b7ff8489c0
--- /dev/null
+++ b/tests/auto/uiloader/baseline/downloaditem.ui
@@ -0,0 +1,134 @@
+<ui version="4.0" >
+ <class>DownloadItem</class>
+ <widget class="QWidget" name="DownloadItem" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>423</width>
+    <height>110</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="fileIcon" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Ico</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2" >
+     <item>
+      <widget class="SqueezeLabel" native="1" name="fileNameLabel" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" stdset="0" >
+        <string>Filename</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QProgressBar" name="progressBar" >
+       <property name="value" >
+        <number>0</number>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="SqueezeLabel" native="1" name="downloadInfoLabel" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" stdset="0" >
+        <string/>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout" >
+     <item>
+      <spacer name="verticalSpacer" >
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>17</width>
+         <height>1</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="tryAgainButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="text" >
+        <string>Try Again</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="stopButton" >
+       <property name="text" >
+        <string>Stop</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="openButton" >
+       <property name="text" >
+        <string>Open</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2" >
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>17</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SqueezeLabel</class>
+   <extends>QWidget</extends>
+   <header>squeezelabel.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/downloads.ui b/tests/auto/uiloader/baseline/downloads.ui
new file mode 100644
index 0000000000000000000000000000000000000000..a2e256935bfe8f80bd02ac77afbf670cd9f12967
--- /dev/null
+++ b/tests/auto/uiloader/baseline/downloads.ui
@@ -0,0 +1,83 @@
+<ui version="4.0" >
+ <class>DownloadDialog</class>
+ <widget class="QDialog" name="DownloadDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>332</width>
+    <height>252</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Downloads</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <property name="spacing" >
+    <number>0</number>
+   </property>
+   <item row="0" column="0" colspan="3" >
+    <widget class="EditTableView" name="downloadsView" />
+   </item>
+   <item row="1" column="0" >
+    <layout class="QHBoxLayout" name="horizontalLayout" >
+     <item>
+      <widget class="QPushButton" name="cleanupButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="text" >
+        <string>Clean up</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>58</width>
+         <height>24</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLabel" name="itemCount" >
+     <property name="text" >
+      <string>0 Items</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2" >
+    <spacer name="horizontalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>148</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>EditTableView</class>
+   <extends>QTableView</extends>
+   <header>edittableview.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/embeddeddialog.ui b/tests/auto/uiloader/baseline/embeddeddialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..f967b1008534651ee188354ae8aa9d2ad60296ae
--- /dev/null
+++ b/tests/auto/uiloader/baseline/embeddeddialog.ui
@@ -0,0 +1,87 @@
+<ui version="4.0" >
+ <class>embeddedDialog</class>
+ <widget class="QDialog" name="embeddedDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>407</width>
+    <height>134</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Embedded Dialog</string>
+  </property>
+  <layout class="QFormLayout" name="formLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Layout Direction:</string>
+     </property>
+     <property name="buddy" >
+      <cstring>layoutDirection</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QComboBox" name="layoutDirection" >
+     <item>
+      <property name="text" >
+       <string>Left to Right</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Right to Left</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="text" >
+      <string>Select Font:</string>
+     </property>
+     <property name="buddy" >
+      <cstring>fontComboBox</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QFontComboBox" name="fontComboBox" />
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_3" >
+     <property name="text" >
+      <string>Style:</string>
+     </property>
+     <property name="buddy" >
+      <cstring>style</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QComboBox" name="style" />
+   </item>
+   <item row="3" column="0" >
+    <widget class="QLabel" name="label_4" >
+     <property name="text" >
+      <string>Layout spacing:</string>
+     </property>
+     <property name="buddy" >
+      <cstring>spacing</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QSlider" name="spacing" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/filespage.ui b/tests/auto/uiloader/baseline/filespage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d308b96646ee3fd465cf1812da6a377736f8f0a6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/filespage.ui
@@ -0,0 +1,79 @@
+<ui version="4.0" >
+ <class>FilesPage</class>
+ <widget class="QWidget" name="FilesPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>242</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" colspan="2" >
+    <widget class="QLabel" name="fileLabel" >
+     <property name="text" >
+      <string>Files:</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item rowspan="3" row="1" column="0" >
+    <widget class="QListWidget" name="fileListWidget" />
+   </item>
+   <item row="1" column="1" >
+    <widget class="QPushButton" name="removeButton" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Remove</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QPushButton" name="removeAllButton" >
+     <property name="text" >
+      <string>Remove All</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>75</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>31</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/filternamedialog.ui b/tests/auto/uiloader/baseline/filternamedialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..be6f17dfb6d09e67ea746d78b7d97ca72f7f5854
--- /dev/null
+++ b/tests/auto/uiloader/baseline/filternamedialog.ui
@@ -0,0 +1,67 @@
+<ui version="4.0" >
+ <class>FilterNameDialogClass</class>
+ <widget class="QDialog" name="FilterNameDialogClass" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>312</width>
+    <height>95</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>FilterNameDialog</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Filter Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <widget class="QLineEdit" name="lineEdit" />
+   </item>
+   <item row="1" column="0" colspan="3" >
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/filterpage.ui b/tests/auto/uiloader/baseline/filterpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7cda3d9bedde67cbc760113b33d5f3b93206d285
--- /dev/null
+++ b/tests/auto/uiloader/baseline/filterpage.ui
@@ -0,0 +1,125 @@
+<ui version="4.0" >
+ <class>FilterPage</class>
+ <widget class="QWidget" name="FilterPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>419</width>
+    <height>243</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Filter attributes for current documentation (comma separated list):</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLineEdit" name="filterLineEdit" />
+   </item>
+   <item row="4" column="0" >
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Custom Filters</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item rowspan="3" row="0" column="0" >
+       <widget class="QTreeWidget" name="customFilterWidget" >
+        <property name="columnCount" >
+         <number>2</number>
+        </property>
+        <column>
+         <property name="text" >
+          <string>1</string>
+         </property>
+        </column>
+        <column>
+         <property name="text" >
+          <string>2</string>
+         </property>
+        </column>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QPushButton" name="addButton" >
+        <property name="text" >
+         <string>Add</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QPushButton" name="removeButton" >
+        <property name="text" >
+         <string>Remove</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="5" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>10</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/finddialog.ui b/tests/auto/uiloader/baseline/finddialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..913a868ad10161e7bc2a03616e7b5b7d43ada879
--- /dev/null
+++ b/tests/auto/uiloader/baseline/finddialog.ui
@@ -0,0 +1,265 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>FindDialog</class>
+ <widget class="QDialog" name="FindDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>414</width>
+    <height>170</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Find</string>
+  </property>
+  <property name="whatsThis" >
+   <string>This window allows you to search for some text in the translation source file.</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <property name="margin" >
+    <number>11</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" >
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <property name="margin" >
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="findWhat" >
+         <property name="text" >
+          <string>&amp;Find what:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>led</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="led" >
+         <property name="whatsThis" >
+          <string>Type in the text to search for.</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="groupBox" >
+       <property name="title" >
+        <string>Options</string>
+       </property>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>9</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item row="1" column="0" >
+         <widget class="QCheckBox" name="sourceText" >
+          <property name="whatsThis" >
+           <string>Source texts are searched when checked.</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Source texts</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0" >
+         <widget class="QCheckBox" name="translations" >
+          <property name="whatsThis" >
+           <string>Translations are searched when checked.</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Translations</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1" >
+         <widget class="QCheckBox" name="matchCase" >
+          <property name="whatsThis" >
+           <string>Texts such as 'TeX' and 'tex' are considered as different when checked.</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Match case</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QCheckBox" name="comments" >
+          <property name="whatsThis" >
+           <string>Comments and contexts are searched when checked.</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Comments</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1" >
+         <widget class="QCheckBox" name="ignoreAccelerators" >
+          <property name="text" >
+           <string>Ignore &amp;accelerators</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QPushButton" name="findNxt" >
+       <property name="whatsThis" >
+        <string>Click here to find the next occurrence of the text you typed in.</string>
+       </property>
+       <property name="text" >
+        <string>Find Next</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+       <property name="flat" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancel" >
+       <property name="whatsThis" >
+        <string>Click here to close this window.</string>
+       </property>
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>20</width>
+         <height>51</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+  <tabstop>led</tabstop>
+  <tabstop>findNxt</tabstop>
+  <tabstop>cancel</tabstop>
+  <tabstop>comments</tabstop>
+  <tabstop>sourceText</tabstop>
+  <tabstop>translations</tabstop>
+  <tabstop>matchCase</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>cancel</sender>
+   <signal>clicked()</signal>
+   <receiver>FindDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>372</x>
+     <y>58</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>373</x>
+     <y>109</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/formwindowsettings.ui b/tests/auto/uiloader/baseline/formwindowsettings.ui
new file mode 100644
index 0000000000000000000000000000000000000000..fea18fe873f7c1694198f7a4733fdd3716d851ed
--- /dev/null
+++ b/tests/auto/uiloader/baseline/formwindowsettings.ui
@@ -0,0 +1,311 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>FormWindowSettings</class>
+ <widget class="QDialog" name="FormWindowSettings" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>433</width>
+    <height>465</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form Settings</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="6" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0" colspan="2" >
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QGroupBox" name="layoutDefaultGroupBox" >
+       <property name="title" >
+        <string>Layout &amp;Default</string>
+       </property>
+       <property name="checkable" >
+        <bool>true</bool>
+       </property>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>8</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item row="1" column="0" >
+         <widget class="QLabel" name="label_2" >
+          <property name="text" >
+           <string>&amp;Spacing:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>defaultSpacingSpinBox</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>&amp;Margin:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>defaultMarginSpinBox</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1" >
+         <widget class="QSpinBox" name="defaultSpacingSpinBox" />
+        </item>
+        <item row="0" column="1" >
+         <widget class="QSpinBox" name="defaultMarginSpinBox" />
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="layoutFunctionGroupBox" >
+       <property name="title" >
+        <string>&amp;Layout Function</string>
+       </property>
+       <property name="checkable" >
+        <bool>true</bool>
+       </property>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>8</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item row="1" column="1" >
+         <widget class="QLineEdit" name="spacingFunctionLineEdit" />
+        </item>
+        <item row="0" column="1" >
+         <widget class="QLineEdit" name="marginFunctionLineEdit" />
+        </item>
+        <item row="0" column="0" >
+         <widget class="QLabel" name="label_3" >
+          <property name="text" >
+           <string>Ma&amp;rgin:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>marginFunctionLineEdit</cstring>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" >
+         <widget class="QLabel" name="label_3_2" >
+          <property name="text" >
+           <string>Spa&amp;cing:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>spacingFunctionLineEdit</cstring>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0" colspan="2" >
+    <widget class="QGroupBox" name="pixmapFunctionGroupBox_2" >
+     <property name="title" >
+      <string>&amp;Author</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QLineEdit" name="authorLineEdit" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item rowspan="2" row="3" column="0" >
+    <widget class="QGroupBox" name="includeHintsGroupBox" >
+     <property name="title" >
+      <string>&amp;Include Hints</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QTextEdit" name="includeHintsTextEdit" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QGroupBox" name="pixmapFunctionGroupBox" >
+       <property name="title" >
+        <string>&amp;Pixmap Function</string>
+       </property>
+       <property name="checkable" >
+        <bool>true</bool>
+       </property>
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>8</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <widget class="QLineEdit" name="pixmapFunctionLineEdit" />
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="4" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>111</width>
+       <height>115</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="qdesigner_internal::GridPanel" name="gridPanel" >
+     <property name="title" >
+      <string>Grid</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::GridPanel</class>
+   <extends>QGroupBox</extends>
+   <header location="global" >gridpanel_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>authorLineEdit</tabstop>
+  <tabstop>defaultMarginSpinBox</tabstop>
+  <tabstop>defaultSpacingSpinBox</tabstop>
+  <tabstop>marginFunctionLineEdit</tabstop>
+  <tabstop>spacingFunctionLineEdit</tabstop>
+  <tabstop>pixmapFunctionLineEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>FormWindowSettings</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>294</x>
+     <y>442</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>150</x>
+     <y>459</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>FormWindowSettings</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>373</x>
+     <y>444</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>357</x>
+     <y>461</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/generalpage.ui b/tests/auto/uiloader/baseline/generalpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..9c2babb0ae6dc049a174474034329fdb1653c6ad
--- /dev/null
+++ b/tests/auto/uiloader/baseline/generalpage.ui
@@ -0,0 +1,69 @@
+<ui version="4.0" >
+ <class>GeneralPage</class>
+ <widget class="QWidget" name="GeneralPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>243</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Namespace:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLineEdit" name="namespaceLineEdit" />
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="text" >
+      <string>Virtual Folder:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QLineEdit" name="folderLineEdit" />
+   </item>
+   <item row="0" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/gridpanel.ui b/tests/auto/uiloader/baseline/gridpanel.ui
new file mode 100644
index 0000000000000000000000000000000000000000..adfdd3684a59b2e6853e2533c3c7814ac7c154fe
--- /dev/null
+++ b/tests/auto/uiloader/baseline/gridpanel.ui
@@ -0,0 +1,144 @@
+<ui version="4.0" >
+ <class>qdesigner_internal::GridPanel</class>
+ <widget class="QWidget" name="qdesigner_internal::GridPanel" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>393</width>
+    <height>110</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="leftMargin" >
+    <number>0</number>
+   </property>
+   <property name="topMargin" >
+    <number>0</number>
+   </property>
+   <property name="rightMargin" >
+    <number>0</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="m_gridGroupBox" >
+     <property name="title" >
+      <string>Grid</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" >
+       <widget class="QCheckBox" name="m_visibleCheckBox" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string>Visible</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Grid &amp;X</string>
+        </property>
+        <property name="buddy" >
+         <cstring>m_deltaXSpinBox</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" >
+       <widget class="QSpinBox" name="m_deltaXSpinBox" >
+        <property name="minimum" >
+         <number>2</number>
+        </property>
+        <property name="maximum" >
+         <number>100</number>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3" >
+       <widget class="QCheckBox" name="m_snapXCheckBox" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string>Snap</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QPushButton" name="m_resetButton" >
+          <property name="text" >
+           <string>Reset</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QLabel" name="label_2" >
+        <property name="text" >
+         <string>Grid &amp;Y</string>
+        </property>
+        <property name="buddy" >
+         <cstring>m_deltaYSpinBox</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2" >
+       <widget class="QSpinBox" name="m_deltaYSpinBox" >
+        <property name="minimum" >
+         <number>2</number>
+        </property>
+        <property name="maximum" >
+         <number>100</number>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="3" >
+       <widget class="QCheckBox" name="m_snapYCheckBox" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string>Snap</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/helpdialog.ui b/tests/auto/uiloader/baseline/helpdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..133f3d2af44b2e1ba932190316835a0b4a35b49c
--- /dev/null
+++ b/tests/auto/uiloader/baseline/helpdialog.ui
@@ -0,0 +1,404 @@
+<ui version="4.0" >
+ <author></author>
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>HelpDialog</class>
+ <widget class="QWidget" name="HelpDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>274</width>
+    <height>417</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Help</string>
+  </property>
+  <property name="whatsThis" >
+   <string>&lt;b>Help&lt;/b>&lt;p>Choose the topic you want help on from the contents list, or search the index for keywords.&lt;/p></string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QTabWidget" name="tabWidget" >
+     <property name="whatsThis" >
+      <string>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</string>
+     </property>
+     <widget class="QWidget" name="contentPage" >
+      <attribute name="title" >
+       <string>Con&amp;tents</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <property name="margin" >
+        <number>5</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QTreeWidget" name="listContents" >
+         <property name="contextMenuPolicy" >
+          <enum>Qt::CustomContextMenu</enum>
+         </property>
+         <property name="whatsThis" >
+          <string>&lt;b>Help topics organized by category.&lt;/b>&lt;p>Double-click an item to see the topics in that category. To view a topic, just double-click it.&lt;/p></string>
+         </property>
+         <property name="rootIsDecorated" >
+          <bool>true</bool>
+         </property>
+         <property name="uniformRowHeights" >
+          <bool>true</bool>
+         </property>
+         <column>
+          <property name="text" >
+           <string>column 1</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="indexPage" >
+      <attribute name="title" >
+       <string>&amp;Index</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <property name="margin" >
+        <number>5</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="TextLabel1" >
+         <property name="text" >
+          <string>&amp;Look For:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>editIndex</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="editIndex" >
+         <property name="toolTip" >
+          <string>Enter keyword</string>
+         </property>
+         <property name="whatsThis" >
+          <string>&lt;b>Enter a keyword.&lt;/b>&lt;p>The list will select an item that matches the entered string best.&lt;/p></string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QListView" name="listIndex" >
+         <property name="contextMenuPolicy" >
+          <enum>Qt::CustomContextMenu</enum>
+         </property>
+         <property name="whatsThis" >
+          <string>&lt;b>List of available help topics.&lt;/b>&lt;p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.&lt;/p></string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="bookmarkPage" >
+      <attribute name="title" >
+       <string>&amp;Bookmarks</string>
+      </attribute>
+      <layout class="QVBoxLayout" >
+       <property name="margin" >
+        <number>5</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QTreeWidget" name="listBookmarks" >
+         <property name="contextMenuPolicy" >
+          <enum>Qt::CustomContextMenu</enum>
+         </property>
+         <property name="whatsThis" >
+          <string>Displays the list of bookmarks.</string>
+         </property>
+         <property name="uniformRowHeights" >
+          <bool>true</bool>
+         </property>
+         <column>
+          <property name="text" >
+           <string>column 1</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType" >
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" >
+            <size>
+             <width>20</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="buttonAdd" >
+           <property name="toolTip" >
+            <string>Add new bookmark</string>
+           </property>
+           <property name="whatsThis" >
+            <string>Add the currently displayed page as a new bookmark.</string>
+           </property>
+           <property name="text" >
+            <string>&amp;New</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="buttonRemove" >
+           <property name="toolTip" >
+            <string>Delete bookmark</string>
+           </property>
+           <property name="whatsThis" >
+            <string>Delete the selected bookmark.</string>
+           </property>
+           <property name="text" >
+            <string>&amp;Delete</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="searchPage" >
+      <attribute name="title" >
+       <string>&amp;Search</string>
+      </attribute>
+      <layout class="QGridLayout" >
+       <property name="margin" >
+        <number>5</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item row="3" column="0" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>20</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="0" column="0" >
+        <widget class="QLabel" name="TextLabel1_2" >
+         <property name="text" >
+          <string>Searching f&amp;or:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>termsEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QLineEdit" name="termsEdit" >
+         <property name="toolTip" >
+          <string>Enter searchword(s).</string>
+         </property>
+         <property name="whatsThis" >
+          <string>&lt;b>Enter search word(s).&lt;/b>&lt;p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.&lt;/p></string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0" >
+        <widget class="QListWidget" name="resultBox" >
+         <property name="contextMenuPolicy" >
+          <enum>Qt::CustomContextMenu</enum>
+         </property>
+         <property name="whatsThis" >
+          <string>&lt;b>Found documents&lt;/b>&lt;p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.&lt;/p></string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0" >
+        <widget class="QLabel" name="TextLabel2" >
+         <property name="text" >
+          <string>Found &amp;Documents:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>resultBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0" >
+        <layout class="QHBoxLayout" >
+         <property name="margin" >
+          <number>1</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="helpButton" >
+           <property name="toolTip" >
+            <string>Display the help page.</string>
+           </property>
+           <property name="whatsThis" >
+            <string>Display the help page for the full text search.</string>
+           </property>
+           <property name="text" >
+            <string>He&amp;lp</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType" >
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" >
+            <size>
+             <width>61</width>
+             <height>21</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="searchButton" >
+           <property name="toolTip" >
+            <string>Start searching.</string>
+           </property>
+           <property name="whatsThis" >
+            <string>Pressing this button starts the search.</string>
+           </property>
+           <property name="text" >
+            <string>&amp;Search</string>
+           </property>
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QFrame" name="framePrepare" >
+     <property name="frameShape" >
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Raised</enum>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="margin" >
+       <number>3</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QLabel" name="labelPrepare" >
+        <property name="text" >
+         <string>Preparing...</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QProgressBar" name="progressPrepare" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>tabWidget</tabstop>
+  <tabstop>listContents</tabstop>
+  <tabstop>editIndex</tabstop>
+  <tabstop>listIndex</tabstop>
+  <tabstop>listBookmarks</tabstop>
+  <tabstop>buttonAdd</tabstop>
+  <tabstop>buttonRemove</tabstop>
+  <tabstop>termsEdit</tabstop>
+  <tabstop>searchButton</tabstop>
+  <tabstop>helpButton</tabstop>
+  <tabstop>resultBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/history.ui b/tests/auto/uiloader/baseline/history.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0944940e7401fe4565e716820187334f5e856928
--- /dev/null
+++ b/tests/auto/uiloader/baseline/history.ui
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>HistoryDialog</class>
+ <widget class="QDialog" name="HistoryDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>758</width>
+    <height>450</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>History</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>252</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="1" >
+    <widget class="SearchLineEdit" name="search" />
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="EditTreeView" name="tree" />
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QPushButton" name="removeButton" >
+       <property name="text" >
+        <string>&amp;Remove</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeAllButton" >
+       <property name="text" >
+        <string>Remove &amp;All</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SearchLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>searchlineedit.h</header>
+  </customwidget>
+  <customwidget>
+   <class>EditTreeView</class>
+   <extends>QTreeView</extends>
+   <header>edittreeview.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>HistoryDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>472</x>
+     <y>329</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>461</x>
+     <y>356</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/identifierpage.ui b/tests/auto/uiloader/baseline/identifierpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..cd0df7563892ba16e4d44a3ec2886b2161a19c75
--- /dev/null
+++ b/tests/auto/uiloader/baseline/identifierpage.ui
@@ -0,0 +1,132 @@
+<ui version="4.0" >
+ <class>IdentifierPage</class>
+ <widget class="QWidget" name="IdentifierPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>242</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0" colspan="3" >
+    <widget class="QCheckBox" name="identifierCheckBox" >
+     <property name="text" >
+      <string>Create identifiers</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="3" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>161</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>30</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QRadioButton" name="globalButton" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+     <property name="text" >
+      <string>Global prefix:</string>
+     </property>
+     <property name="checked" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2" >
+    <widget class="QLineEdit" name="prefixLineEdit" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" colspan="2" >
+    <widget class="QRadioButton" name="fileNameButton" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+     <property name="text" >
+      <string>Inherit prefix from file names</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>31</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>globalButton</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>prefixLineEdit</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>122</x>
+     <y>72</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>161</x>
+     <y>71</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/imagedialog.ui b/tests/auto/uiloader/baseline/imagedialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1c5e546f2c09034e4130ba8e92021abc6a5b6af6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/imagedialog.ui
@@ -0,0 +1,389 @@
+<ui version="4.0" >
+ <comment></comment>
+ <class>ImageDialog</class>
+ <widget class="QDialog" >
+  <property name="objectName" >
+   <string notr="true" >ImageDialog</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>320</width>
+    <height>180</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Create Image</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="objectName" >
+    <string notr="true" />
+   </property>
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" >
+     <property name="objectName" >
+      <string notr="true" />
+     </property>
+     <property name="margin" >
+      <number>1</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="widthLabel" >
+       <property name="objectName" >
+        <string notr="true" >widthLabel</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>1</x>
+         <y>27</y>
+         <width>67</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>Width:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="heightLabel" >
+       <property name="objectName" >
+        <string notr="true" >heightLabel</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>1</x>
+         <y>55</y>
+         <width>67</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>Height:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="1" >
+      <widget class="QComboBox" name="colorDepthCombo" >
+       <property name="objectName" >
+        <string notr="true" >colorDepthCombo</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>74</x>
+         <y>83</y>
+         <width>227</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="insertPolicy" >
+        <enum>QComboBox::InsertAtBottom</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="nameLineEdit" >
+       <property name="objectName" >
+        <string notr="true" >nameLineEdit</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>74</x>
+         <y>83</y>
+         <width>227</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>1</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Untitled image</string>
+       </property>
+       <property name="echoMode" >
+        <enum>QLineEdit::Normal</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QSpinBox" name="spinBox" >
+       <property name="objectName" >
+        <string notr="true" >spinBox</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>74</x>
+         <y>1</y>
+         <width>227</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="buttonSymbols" >
+        <enum>QAbstractSpinBox::UpDownArrows</enum>
+       </property>
+       <property name="value" >
+        <number>32</number>
+       </property>
+       <property name="maximum" >
+        <number>1024</number>
+       </property>
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1" >
+      <widget class="QSpinBox" name="spinBox_2" >
+       <property name="objectName" >
+        <string notr="true" >spinBox_2</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>74</x>
+         <y>27</y>
+         <width>227</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="buttonSymbols" >
+        <enum>QAbstractSpinBox::UpDownArrows</enum>
+       </property>
+       <property name="value" >
+        <number>32</number>
+       </property>
+       <property name="maximum" >
+        <number>1024</number>
+       </property>
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="nameLabel" >
+       <property name="objectName" >
+        <string notr="true" >nameLabel</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>1</x>
+         <y>1</y>
+         <width>67</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>Name:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="0" >
+      <widget class="QLabel" name="colorDepthLabel" >
+       <property name="objectName" >
+        <string notr="true" >colorDepthLabel</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>1</x>
+         <y>83</y>
+         <width>67</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>Color depth:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer>
+     <property name="objectName" >
+      <string notr="true" />
+     </property>
+     <property name="geometry" >
+      <rect>
+       <x>9</x>
+       <y>121</y>
+       <width>302</width>
+       <height>18</height>
+      </rect>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="objectName" >
+      <string notr="true" />
+     </property>
+     <property name="margin" >
+      <number>1</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="objectName" >
+        <string notr="true" />
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>1</x>
+         <y>1</y>
+         <width>128</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="objectName" >
+        <string notr="true" >okButton</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>135</x>
+         <y>1</y>
+         <width>80</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="objectName" >
+        <string notr="true" >cancelButton</string>
+       </property>
+       <property name="geometry" >
+        <rect>
+         <x>221</x>
+         <y>1</y>
+         <width>80</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>nameLineEdit</tabstop>
+  <tabstop>spinBox</tabstop>
+  <tabstop>spinBox_2</tabstop>
+  <tabstop>colorDepthCombo</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <connections>
+  <connection>
+   <sender>nameLineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>okButton</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>-1</x>
+     <y>7</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>-1</x>
+     <y>7</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/images/arrow-down.png b/tests/auto/uiloader/baseline/images/arrow-down.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c9274f30c627b15bd8bb867ffc7a5180000e3a5
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/arrow-down.png differ
diff --git a/tests/auto/uiloader/baseline/images/arrow-up.png b/tests/auto/uiloader/baseline/images/arrow-up.png
new file mode 100644
index 0000000000000000000000000000000000000000..758a0d1afda7de0fd57f63f3bc7ff39a554bf377
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/arrow-up.png differ
diff --git a/tests/auto/uiloader/baseline/images/borderimage.png b/tests/auto/uiloader/baseline/images/borderimage.png
new file mode 100644
index 0000000000000000000000000000000000000000..199fc890f41f24d29cae671c7fd4031e672fabd8
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/borderimage.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked.png b/tests/auto/uiloader/baseline/images/checkbox_checked.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbf06f6513d6b11721290c3f0f3be5bd2d157e84
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png b/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb4d4d3fdb8317007df5f7daef85d2047cc13b7f
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png b/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..852fcc0306cb561fcb1fea023a0888e9757283d6
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f5465582a9a2e6a85adbe07a4a2da5e80b8b017
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..687364497ef12ee7a723c753e4b3e548856c00c6
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a768c44de657b0ad4c15e21b1eb234b22725107
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/down_arrow.png b/tests/auto/uiloader/baseline/images/down_arrow.png
new file mode 100644
index 0000000000000000000000000000000000000000..85004aeaf6bfa305df9bbeb7e56dbf6e42d05ff3
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/down_arrow.png differ
diff --git a/tests/auto/uiloader/baseline/images/down_arrow_disabled.png b/tests/auto/uiloader/baseline/images/down_arrow_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9eefed4c8cb439ee82dd11a3e00387c0d5b0354
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/down_arrow_disabled.png differ
diff --git a/tests/auto/uiloader/baseline/images/frame.png b/tests/auto/uiloader/baseline/images/frame.png
new file mode 100644
index 0000000000000000000000000000000000000000..05a600502ed0ef7bf2187837006c7221781123e7
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/frame.png differ
diff --git a/tests/auto/uiloader/baseline/images/pagefold.png b/tests/auto/uiloader/baseline/images/pagefold.png
new file mode 100644
index 0000000000000000000000000000000000000000..69be8f2a38dc9be855f384a26fda391f2e0cf304
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pagefold.png differ
diff --git a/tests/auto/uiloader/baseline/images/pushbutton.png b/tests/auto/uiloader/baseline/images/pushbutton.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7529ba02d5d3e1ef193cedda6f5ba0e1b153ef6
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton.png differ
diff --git a/tests/auto/uiloader/baseline/images/pushbutton_hover.png b/tests/auto/uiloader/baseline/images/pushbutton_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..af0ef9d561221d6ba6501226007ee9482da6046a
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/pushbutton_pressed.png b/tests/auto/uiloader/baseline/images/pushbutton_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7381f752a0cc31032beec357d287efc999b0887
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked.png b/tests/auto/uiloader/baseline/images/radiobutton_checked.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ab9157578050442b58d511ad791f9ba12d545d1
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png b/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..d68cb009a7c087babcda871b7614d2c5a0c38cb8
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png b/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3cd5a59e4be580940ff6d62a734ae09abd00995
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png
new file mode 100644
index 0000000000000000000000000000000000000000..321a9a1558aaa2923dec91f9b509d5f192f6b482
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..666a3b0bdd4a41fad993b4f8ba9596daec337bfa
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4b0567aa9cfa14324b7be191360d934038370e3
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/sizegrip.png b/tests/auto/uiloader/baseline/images/sizegrip.png
new file mode 100644
index 0000000000000000000000000000000000000000..350583aaac4aa474ac449eaea2cc7ddd060276b9
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/sizegrip.png differ
diff --git a/tests/auto/uiloader/baseline/images/spindown.png b/tests/auto/uiloader/baseline/images/spindown.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ff3c6492655ee56e893b89ad5addff4704f9af2
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown.png differ
diff --git a/tests/auto/uiloader/baseline/images/spindown_hover.png b/tests/auto/uiloader/baseline/images/spindown_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..1486c4dfe46bb0bc904e6a5f620be6c9f5c3fadc
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/spindown_off.png b/tests/auto/uiloader/baseline/images/spindown_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..a90ab3f03846fef2972fef05be6ba0e5e6c9b7a0
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_off.png differ
diff --git a/tests/auto/uiloader/baseline/images/spindown_pressed.png b/tests/auto/uiloader/baseline/images/spindown_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6271cbde2135bbe3dfb33cd4fdae4a480a7b685
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/spinup.png b/tests/auto/uiloader/baseline/images/spinup.png
new file mode 100644
index 0000000000000000000000000000000000000000..1069dd00dfcbc95e1a70adcab926d1f12a13604f
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup.png differ
diff --git a/tests/auto/uiloader/baseline/images/spinup_hover.png b/tests/auto/uiloader/baseline/images/spinup_hover.png
new file mode 100644
index 0000000000000000000000000000000000000000..884c8d77c51b48373766795edb280ae37c8ed65a
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_hover.png differ
diff --git a/tests/auto/uiloader/baseline/images/spinup_off.png b/tests/auto/uiloader/baseline/images/spinup_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..02dad1fb2923afe80b92931537b72a7c1cc8ace5
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_off.png differ
diff --git a/tests/auto/uiloader/baseline/images/spinup_pressed.png b/tests/auto/uiloader/baseline/images/spinup_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1843e2a1fad785e51521d2aa661d3d8c7e5725c
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_pressed.png differ
diff --git a/tests/auto/uiloader/baseline/images/splitter_horizontal.png b/tests/auto/uiloader/baseline/images/splitter_horizontal.png
new file mode 100644
index 0000000000000000000000000000000000000000..66107cf548fee7db8c1d9243513eb631b3114663
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/splitter_horizontal.png differ
diff --git a/tests/auto/uiloader/baseline/images/splitter_vertical.png b/tests/auto/uiloader/baseline/images/splitter_vertical.png
new file mode 100644
index 0000000000000000000000000000000000000000..f907c0b5769aeb11aba2d20fbed2f36539c93377
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/splitter_vertical.png differ
diff --git a/tests/auto/uiloader/baseline/images/up_arrow.png b/tests/auto/uiloader/baseline/images/up_arrow.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7f7ddb3a63d964c4daee258ac00f373e79229d6
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/up_arrow.png differ
diff --git a/tests/auto/uiloader/baseline/images/up_arrow_disabled.png b/tests/auto/uiloader/baseline/images/up_arrow_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d2c27770fe82267925cc83eac1f8a3ab51098d5
Binary files /dev/null and b/tests/auto/uiloader/baseline/images/up_arrow_disabled.png differ
diff --git a/tests/auto/uiloader/baseline/inputpage.ui b/tests/auto/uiloader/baseline/inputpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..e7cd3a0fadd6179b370ec1140b98039e404393d3
--- /dev/null
+++ b/tests/auto/uiloader/baseline/inputpage.ui
@@ -0,0 +1,79 @@
+<ui version="4.0" >
+ <class>InputPage</class>
+ <widget class="QWidget" name="InputPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>242</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="2" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>File name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLineEdit" name="fileLineEdit" />
+     </item>
+     <item>
+      <widget class="QToolButton" name="browseButton" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>31</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/installdialog.ui b/tests/auto/uiloader/baseline/installdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..21a05da77ec01c183b31a7941f3e6aeb0ee96e0f
--- /dev/null
+++ b/tests/auto/uiloader/baseline/installdialog.ui
@@ -0,0 +1,118 @@
+<ui version="4.0" >
+ <class>InstallDialog</class>
+ <widget class="QDialog" name="InstallDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>436</width>
+    <height>245</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Install Documentation</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" colspan="4" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Available Documentation:</string>
+     </property>
+    </widget>
+   </item>
+   <item rowspan="4" row="1" column="0" colspan="4" >
+    <widget class="QListWidget" name="listWidget" />
+   </item>
+   <item row="1" column="4" >
+    <widget class="QPushButton" name="installButton" >
+     <property name="text" >
+      <string>Install</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="4" >
+    <widget class="QPushButton" name="cancelButton" >
+     <property name="text" >
+      <string>Cancel</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="4" >
+    <widget class="QPushButton" name="closeButton" >
+     <property name="text" >
+      <string>Close</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="4" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>56</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="5" column="0" >
+    <widget class="QLabel" name="label_4" >
+     <property name="text" >
+      <string>Installation Path:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1" colspan="2" >
+    <widget class="QLineEdit" name="pathLineEdit" />
+   </item>
+   <item row="5" column="3" >
+    <widget class="QToolButton" name="browseButton" >
+     <property name="text" >
+      <string>...</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="0" colspan="5" >
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="7" column="0" colspan="2" >
+    <widget class="QLabel" name="statusLabel" />
+   </item>
+   <item row="7" column="2" colspan="3" >
+    <widget class="QProgressBar" name="progressBar" >
+     <property name="value" >
+      <number>0</number>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>closeButton</sender>
+   <signal>clicked()</signal>
+   <receiver>InstallDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>330</x>
+     <y>107</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>332</x>
+     <y>158</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/languagesdialog.ui b/tests/auto/uiloader/baseline/languagesdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..93b490e9edb886fa2e649f96fdfe9bab3e8b59eb
--- /dev/null
+++ b/tests/auto/uiloader/baseline/languagesdialog.ui
@@ -0,0 +1,160 @@
+<ui version="4.0" >
+ <class>LanguagesDialog</class>
+ <widget class="QDialog" name="LanguagesDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Auxiliary Languages</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <widget class="QTreeWidget" name="languagesList" >
+     <property name="indentation" >
+      <number>0</number>
+     </property>
+     <column>
+      <property name="text" >
+       <string>Locale</string>
+      </property>
+     </column>
+     <column>
+      <property name="text" >
+       <string>File</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QToolButton" name="upButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="toolTip" >
+        <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Move selected language up&lt;/p>&lt;/body>&lt;/html></string>
+       </property>
+       <property name="text" >
+        <string>up</string>
+       </property>
+       <property name="icon" >
+        <iconset resource="linguist.qrc" >
+         <normaloff>:/images/up.png</normaloff>:/images/up.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="downButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="toolTip" >
+        <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;">Move selected language down&lt;/p>&lt;/body>&lt;/html></string>
+       </property>
+       <property name="text" >
+        <string>down</string>
+       </property>
+       <property name="icon" >
+        <iconset resource="linguist.qrc" >
+         <normaloff>:/images/down.png</normaloff>:/images/down.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="removeButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="toolTip" >
+        <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Remove selected language&lt;/p>&lt;/body>&lt;/html></string>
+       </property>
+       <property name="text" >
+        <string>remove</string>
+       </property>
+       <property name="icon" >
+        <iconset resource="linguist.qrc" >
+         <normaloff>:/images/editdelete.png</normaloff>:/images/editdelete.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="openFileButton" >
+       <property name="enabled" >
+        <bool>true</bool>
+       </property>
+       <property name="toolTip" >
+        <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Open auxiliary language files&lt;/p>&lt;/body>&lt;/html></string>
+       </property>
+       <property name="text" >
+        <string>...</string>
+       </property>
+       <property name="icon" >
+        <iconset resource="linguist.qrc" >
+         <normaloff>:/images/mac/fileopen.png</normaloff>:/images/mac/fileopen.png</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>121</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="linguist.qrc" />
+ </resources>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>LanguagesDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>352</x>
+     <y>39</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>233</x>
+     <y>29</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/listwidgeteditor.ui b/tests/auto/uiloader/baseline/listwidgeteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d962bdbbb69dfa578a886b636258d089bcd4f
--- /dev/null
+++ b/tests/auto/uiloader/baseline/listwidgeteditor.ui
@@ -0,0 +1,226 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::ListWidgetEditor</class>
+ <widget class="QDialog" name="qdesigner_internal::ListWidgetEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>223</width>
+    <height>245</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Items List</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="QListWidget" name="listWidget" >
+        <property name="toolTip" >
+         <string>Items List</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout_2" >
+        <item>
+         <widget class="QToolButton" name="newItemButton" >
+          <property name="toolTip" >
+           <string>New Item</string>
+          </property>
+          <property name="text" >
+           <string>&amp;New</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="deleteItemButton" >
+          <property name="toolTip" >
+           <string>Delete Item</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Delete</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>16</width>
+            <height>10</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemUpButton" >
+          <property name="toolTip" >
+           <string>Move Item Up</string>
+          </property>
+          <property name="text" >
+           <string>U</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemDownButton" >
+          <property name="toolTip" >
+           <string>Move Item Down</string>
+          </property>
+          <property name="text" >
+           <string>D</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="2" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
+        <item>
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>Icon</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" />
+        </item>
+        <item>
+         <spacer name="horizontalSpacer" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>108</width>
+            <height>21</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+  <zorder>buttonBox</zorder>
+  <zorder>groupBox</zorder>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::IconSelector</class>
+   <extends>QWidget</extends>
+   <header>iconselector_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>listWidget</tabstop>
+  <tabstop>newItemButton</tabstop>
+  <tabstop>deleteItemButton</tabstop>
+  <tabstop>moveItemUpButton</tabstop>
+  <tabstop>moveItemDownButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::ListWidgetEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>140</x>
+     <y>291</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>73</x>
+     <y>301</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::ListWidgetEditor</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>230</x>
+     <y>289</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>253</x>
+     <y>304</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/mainwindow.ui b/tests/auto/uiloader/baseline/mainwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..f6eda4fdd6a56797b89dc394767d9a9de33e0146
--- /dev/null
+++ b/tests/auto/uiloader/baseline/mainwindow.ui
@@ -0,0 +1,502 @@
+<ui version="4.0" >
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>829</width>
+    <height>813</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>MakeQPF</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <layout class="QVBoxLayout" >
+    <property name="margin" >
+     <number>9</number>
+    </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Font Properties</string>
+      </property>
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label" >
+         <property name="text" >
+          <string>Family:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QFontComboBox" name="fontComboBox" />
+       </item>
+       <item>
+        <widget class="QLabel" name="label_2" >
+         <property name="text" >
+          <string>Pixel Size:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="pixelSize" >
+         <property name="minimum" >
+          <number>1</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_7" >
+         <property name="text" >
+          <string>Weight:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QComboBox" name="weightCombo" />
+       </item>
+       <item>
+        <widget class="QCheckBox" name="italic" >
+         <property name="text" >
+          <string>Italic</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="groupBox_2" >
+      <property name="title" >
+       <string>Glyph Coverage</string>
+      </property>
+      <layout class="QVBoxLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QRadioButton" name="chooseFromCodePoints" >
+         <property name="text" >
+          <string>Choose from Unicode Codepoints:</string>
+         </property>
+         <property name="checked" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QVBoxLayout" >
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <widget class="QListWidget" name="characterRangeView" />
+         </item>
+         <item>
+          <layout class="QHBoxLayout" >
+           <property name="margin" >
+            <number>0</number>
+           </property>
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="QPushButton" name="selectAll" >
+             <property name="text" >
+              <string>Select &amp;All</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QPushButton" name="deselectAll" >
+             <property name="text" >
+              <string>&amp;Deselect All</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QPushButton" name="invertSelection" >
+             <property name="text" >
+              <string>&amp;Invert Selection</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" >
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="chooseFromSampleFile" >
+         <property name="text" >
+          <string>Choose from Sample Text File (UTF-8 Encoded):</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <widget class="QLabel" name="label_5" >
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+           <property name="text" >
+            <string>Path:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="sampleFile" >
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="browseSampleFile" >
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+           <property name="text" >
+            <string>Browse...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="charCount" >
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+           <property name="text" >
+            <string>TextLabel</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="groupBox_3" >
+      <property name="title" >
+       <string>Preview</string>
+      </property>
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLineEdit" name="preview" />
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="QGroupBox" name="groupBox_4" >
+      <property name="title" >
+       <string>Output Options</string>
+      </property>
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="label_3" >
+         <property name="text" >
+          <string>Path:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="path" />
+       </item>
+       <item>
+        <widget class="QPushButton" name="browsePath" >
+         <property name="text" >
+          <string>Browse...</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4" >
+         <property name="text" >
+          <string>Filename:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="fileName" >
+         <property name="enabled" >
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" >
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QPushButton" name="generate" >
+        <property name="text" >
+         <string>Generate Pre-Rendered Font...</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>829</width>
+     <height>29</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile" >
+    <property name="title" >
+     <string>File</string>
+    </property>
+    <addaction name="actionAdd_Custom_Font" />
+    <addaction name="separator" />
+    <addaction name="action_Exit" />
+   </widget>
+   <addaction name="menuFile" />
+  </widget>
+  <widget class="QStatusBar" name="statusbar" />
+  <action name="actionAdd_Custom_Font" >
+   <property name="text" >
+    <string>&amp;Add Custom Font...</string>
+   </property>
+  </action>
+  <action name="action_Exit" >
+   <property name="text" >
+    <string>&amp;Exit</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>action_Exit</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>383</x>
+     <y>215</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromCodePoints</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>characterRangeView</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>183</x>
+     <y>144</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>146</x>
+     <y>295</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromCodePoints</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>selectAll</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>236</x>
+     <y>146</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>46</x>
+     <y>508</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromCodePoints</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>deselectAll</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>280</x>
+     <y>147</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>158</x>
+     <y>502</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromCodePoints</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>invertSelection</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>364</x>
+     <y>143</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>281</x>
+     <y>509</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromSampleFile</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>sampleFile</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>134</x>
+     <y>544</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>64</x>
+     <y>569</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromSampleFile</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>browseSampleFile</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>79</x>
+     <y>545</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>710</x>
+     <y>582</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromSampleFile</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>charCount</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>274</x>
+     <y>544</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>790</x>
+     <y>569</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>chooseFromSampleFile</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_5</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>112</x>
+     <y>541</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>37</x>
+     <y>579</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/mainwindowbase.ui b/tests/auto/uiloader/baseline/mainwindowbase.ui
new file mode 100644
index 0000000000000000000000000000000000000000..27fbdc96836cff75a1460fc74f06825117ed9691
--- /dev/null
+++ b/tests/auto/uiloader/baseline/mainwindowbase.ui
@@ -0,0 +1,1214 @@
+<ui version="4.0" >
+ <author></author>
+  <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>MainWindowBase</class>
+ <widget class="Q3MainWindow" name="MainWindowBase" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>724</width>
+    <height>615</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt Configuration</string>
+  </property>
+  <widget class="QWidget" name="widget" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>28</y>
+     <width>724</width>
+     <height>587</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="margin" >
+     <number>8</number>
+    </property>
+    <property name="spacing" >
+     <number>4</number>
+    </property>
+    <item>
+     <widget class="QTextEdit" name="helpview" >
+      <property name="minimumSize" >
+       <size>
+        <width>200</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="readOnly" >
+        <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QTabWidget" name="TabWidget3" >
+      <widget class="QWidget" name="tab1" >
+       <attribute name="title" >
+        <string>Appearance</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>4</number>
+        </property>
+        <property name="spacing" >
+         <number>4</number>
+        </property>
+        <item>
+         <widget class="QGroupBox" name="GroupBox40" >
+          <property name="title" >
+           <string>GUI Style</string>
+          </property>
+          <layout class="QHBoxLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="gstylebuddy" >
+             <property name="text" >
+              <string>Select GUI &amp;Style:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>gstylecombo</cstring>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="gstylecombo" />
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="groupAutoPalette" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>5</hsizetype>
+            <vsizetype>4</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="title" >
+           <string>Build Palette</string>
+          </property>
+          <layout class="QHBoxLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="labelMainColor" >
+             <property name="text" >
+              <string>&amp;3-D Effects:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>buttonMainColor</cstring>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="ColorButton" name="buttonMainColor" />
+           </item>
+           <item>
+            <widget class="QLabel" name="labelMainColor2" >
+             <property name="sizePolicy" >
+              <sizepolicy>
+               <hsizetype>1</hsizetype>
+               <vsizetype>1</vsizetype>
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize" >
+              <size>
+               <width>50</width>
+               <height>0</height>
+              </size>
+             </property>
+             <property name="lineWidth" >
+              <number>1</number>
+             </property>
+             <property name="midLineWidth" >
+              <number>0</number>
+             </property>
+             <property name="text" >
+              <string>Window Back&amp;ground:</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignVCenter</set>
+             </property>
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="buddy" >
+              <cstring>buttonMainColor2</cstring>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="ColorButton" name="buttonMainColor2" />
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeType" >
+              <enum>QSizePolicy::Expanding</enum>
+             </property>
+             <property name="sizeHint" >
+              <size>
+               <width>70</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QPushButton" name="btnAdvanced" >
+             <property name="text" >
+              <string>&amp;Tune Palette...</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="GroupBox126" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>5</hsizetype>
+            <vsizetype>7</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="title" >
+           <string>Preview</string>
+          </property>
+          <layout class="QGridLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item row="0" column="0" >
+            <widget class="QLabel" name="TextLabel1" >
+             <property name="text" >
+              <string>Select &amp;Palette:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>paletteCombo</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1" >
+            <widget class="QComboBox" name="paletteCombo" >
+             <item>
+              <property name="text" >
+               <string>Active Palette</string>
+              </property>
+             </item>
+             <item>
+              <property name="text" >
+               <string>Inactive Palette</string>
+              </property>
+             </item>
+             <item>
+              <property name="text" >
+               <string>Disabled Palette</string>
+              </property>
+             </item>
+            </widget>
+           </item>
+           <item row="1" column="0" colspan="2" >
+            <widget class="PreviewFrame" name="previewFrame" >
+             <property name="sizePolicy" >
+              <sizepolicy>
+               <hsizetype>7</hsizetype>
+               <vsizetype>7</vsizetype>
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize" >
+              <size>
+               <width>410</width>
+               <height>260</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab2" >
+       <attribute name="title" >
+        <string>Fonts</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>8</number>
+        </property>
+        <property name="spacing" >
+         <number>4</number>
+        </property>
+        <item>
+         <widget class="QGroupBox" name="GroupBox1" >
+          <property name="title" >
+           <string>Default Font</string>
+          </property>
+          <layout class="QGridLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item row="1" column="1" >
+            <widget class="QComboBox" name="stylecombo" >
+             <property name="autoCompletion" >
+              <bool>true</bool>
+             </property>
+             <property name="duplicatesEnabled" >
+              <bool>false</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1" >
+            <widget class="QComboBox" name="familycombo" >
+             <property name="autoCompletion" >
+              <bool>true</bool>
+             </property>
+             <property name="duplicatesEnabled" >
+              <bool>false</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="1" >
+            <widget class="QComboBox" name="psizecombo" >
+             <property name="editable" >
+              <bool>true</bool>
+             </property>
+             <property name="autoCompletion" >
+              <bool>true</bool>
+             </property>
+             <property name="duplicatesEnabled" >
+              <bool>false</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+            <widget class="QLabel" name="stylebuddy" >
+             <property name="text" >
+              <string>&amp;Style:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>stylecombo</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0" >
+            <widget class="QLabel" name="psizebuddy" >
+             <property name="text" >
+              <string>&amp;Point Size:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>psizecombo</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0" >
+            <widget class="QLabel" name="familybuddy" >
+             <property name="text" >
+              <string>F&amp;amily:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>familycombo</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="0" colspan="2" >
+            <widget class="QLineEdit" name="samplelineedit" >
+             <property name="text" >
+              <string>Sample Text</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignHCenter</set>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="GroupBox2" >
+          <property name="title" >
+           <string>Font Substitution</string>
+          </property>
+          <layout class="QVBoxLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item>
+            <layout class="QHBoxLayout" >
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="spacing" >
+              <number>4</number>
+             </property>
+             <item>
+              <widget class="QLabel" name="famsubbuddy" >
+               <property name="text" >
+                <string>S&amp;elect or Enter a Family:</string>
+               </property>
+               <property name="buddy" >
+                <cstring>familysubcombo</cstring>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QComboBox" name="familysubcombo" >
+               <property name="editable" >
+                <bool>true</bool>
+               </property>
+               <property name="autoCompletion" >
+                <bool>true</bool>
+               </property>
+               <property name="duplicatesEnabled" >
+                <bool>false</bool>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <widget class="Line" name="Line1" >
+             <property name="frameShape" >
+              <enum>QFrame::HLine</enum>
+             </property>
+             <property name="frameShadow" >
+              <enum>QFrame::Sunken</enum>
+             </property>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="TextLabel5" >
+             <property name="text" >
+              <string>Current Substitutions:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Q3ListBox" name="sublistbox" />
+           </item>
+           <item>
+            <layout class="QHBoxLayout" >
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="spacing" >
+              <number>4</number>
+             </property>
+             <item>
+              <widget class="QPushButton" name="PushButton2" >
+               <property name="text" >
+                <string>Up</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QPushButton" name="PushButton3" >
+               <property name="text" >
+                <string>Down</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QPushButton" name="PushButton4" >
+               <property name="text" >
+                <string>Remove</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <widget class="Line" name="Line2" >
+             <property name="frameShape" >
+              <enum>QFrame::HLine</enum>
+             </property>
+             <property name="frameShadow" >
+              <enum>QFrame::Sunken</enum>
+             </property>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <layout class="QHBoxLayout" >
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="spacing" >
+              <number>4</number>
+             </property>
+             <item>
+              <widget class="QLabel" name="choosebuddy" >
+               <property name="text" >
+                <string>Select s&amp;ubstitute Family:</string>
+               </property>
+               <property name="buddy" >
+                <cstring>choosesubcombo</cstring>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QComboBox" name="choosesubcombo" >
+               <property name="autoCompletion" >
+                <bool>true</bool>
+               </property>
+               <property name="duplicatesEnabled" >
+                <bool>false</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QPushButton" name="PushButton1" >
+               <property name="text" >
+                <string>Add</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab" >
+       <attribute name="title" >
+        <string>Interface</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>7</number>
+        </property>
+        <property name="spacing" >
+         <number>4</number>
+        </property>
+        <item>
+         <widget class="QGroupBox" name="GroupBox4" >
+          <property name="title" >
+           <string>Feel Settings</string>
+          </property>
+          <layout class="QGridLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item row="0" column="1" >
+            <widget class="QSpinBox" name="dcispin" >
+             <property name="suffix" >
+              <string> ms</string>
+             </property>
+             <property name="maximum" >
+              <number>10000</number>
+             </property>
+             <property name="minimum" >
+              <number>10</number>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0" >
+            <widget class="QLabel" name="dcibuddy" >
+             <property name="text" >
+              <string>&amp;Double Click Interval:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>dcispin</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1" >
+            <widget class="QSpinBox" name="cfispin" >
+             <property name="specialValueText" >
+              <string>No blinking</string>
+             </property>
+             <property name="suffix" >
+              <string> ms</string>
+             </property>
+             <property name="maximum" >
+              <number>10000</number>
+             </property>
+             <property name="minimum" >
+              <number>9</number>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+            <widget class="QLabel" name="cfibuddy" >
+             <property name="text" >
+              <string>&amp;Cursor Flash Time:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>cfispin</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="1" >
+            <widget class="QSpinBox" name="wslspin" >
+             <property name="suffix" >
+              <string> lines</string>
+             </property>
+             <property name="maximum" >
+              <number>20</number>
+             </property>
+             <property name="minimum" >
+              <number>1</number>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0" >
+            <widget class="QLabel" name="wslbuddy" >
+             <property name="text" >
+              <string>Wheel &amp;Scroll Lines:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>wslspin</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="0" colspan="2" >
+            <widget class="QCheckBox" name="resolvelinks" >
+             <property name="text" >
+              <string>Resolve symlinks in URLs</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="GroupBox3" >
+          <property name="title" >
+           <string>GUI Effects</string>
+          </property>
+          <layout class="QVBoxLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item>
+            <widget class="QCheckBox" name="effectcheckbox" >
+             <property name="text" >
+              <string>&amp;Enable</string>
+             </property>
+             <property name="shortcut" >
+              <string>Alt+E</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Q3Frame" name="effectbase" >
+             <property name="frameShape" >
+              <enum>QFrame::NoFrame</enum>
+             </property>
+             <property name="frameShadow" >
+              <enum>QFrame::Plain</enum>
+             </property>
+             <layout class="QGridLayout" >
+              <property name="margin" >
+               <number>0</number>
+              </property>
+              <property name="spacing" >
+               <number>4</number>
+              </property>
+              <item row="0" column="0" >
+               <widget class="QLabel" name="meffectbuddy" >
+                <property name="text" >
+                 <string>&amp;Menu Effect:</string>
+                </property>
+                <property name="buddy" >
+                 <cstring>menueffect</cstring>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0" >
+               <widget class="QLabel" name="ceffectbuddy" >
+                <property name="text" >
+                 <string>C&amp;omboBox Effect:</string>
+                </property>
+                <property name="buddy" >
+                 <cstring>comboeffect</cstring>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="0" >
+               <widget class="QLabel" name="teffectbuddy" >
+                <property name="text" >
+                 <string>&amp;ToolTip Effect:</string>
+                </property>
+                <property name="buddy" >
+                 <cstring>tooltipeffect</cstring>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="0" >
+               <widget class="QLabel" name="beffectbuddy" >
+                <property name="text" >
+                 <string>Tool&amp;Box Effect:</string>
+                </property>
+                <property name="buddy" >
+                 <cstring>toolboxeffect</cstring>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="1" >
+               <widget class="QComboBox" name="menueffect" >
+                <property name="currentIndex" >
+                 <number>0</number>
+                </property>
+                <property name="autoCompletion" >
+                 <bool>true</bool>
+                </property>
+                <item>
+                 <property name="text" >
+                  <string>Disable</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Animate</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Fade</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="1" column="1" >
+               <widget class="QComboBox" name="comboeffect" >
+                <item>
+                 <property name="text" >
+                  <string>Disable</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Animate</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="2" column="1" >
+               <widget class="QComboBox" name="tooltipeffect" >
+                <item>
+                 <property name="text" >
+                  <string>Disable</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Animate</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Fade</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="3" column="1" >
+               <widget class="QComboBox" name="toolboxeffect" >
+                <item>
+                 <property name="text" >
+                  <string>Disable</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text" >
+                  <string>Animate</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="GroupBox5" >
+          <property name="title" >
+           <string>Global Strut</string>
+          </property>
+          <layout class="QGridLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item row="0" column="0" >
+            <widget class="QLabel" name="swbuddy" >
+             <property name="text" >
+              <string>Minimum &amp;Width:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>strutwidth</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+            <widget class="QLabel" name="shbuddy" >
+             <property name="text" >
+              <string>Minimum Hei&amp;ght:</string>
+             </property>
+             <property name="buddy" >
+              <cstring>strutheight</cstring>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1" >
+            <widget class="QSpinBox" name="strutwidth" >
+             <property name="suffix" >
+              <string> pixels</string>
+             </property>
+             <property name="maximum" >
+              <number>1000</number>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1" >
+            <widget class="QSpinBox" name="strutheight" >
+             <property name="suffix" >
+              <string> pixels</string>
+             </property>
+             <property name="maximum" >
+              <number>1000</number>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="rtlExtensions" >
+          <property name="text" >
+           <string>Enhanced support for languages written right-to-left</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="inputStyleLabel" >
+          <property name="text" >
+           <string>XIM Input Style:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="inputStyle" >
+          <property name="currentIndex" >
+           <number>0</number>
+          </property>
+          <item>
+           <property name="text" >
+            <string>On The Spot</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Over The Spot</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Off The Spot</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Root</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType" >
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab3" >
+       <attribute name="title" >
+        <string>Printer</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>8</number>
+        </property>
+        <property name="spacing" >
+         <number>4</number>
+        </property>
+        <item>
+         <widget class="QCheckBox" name="fontembeddingcheckbox" >
+          <property name="text" >
+           <string>Enable Font embedding</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="GroupBox10" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>5</hsizetype>
+            <vsizetype>7</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="title" >
+           <string>Font Paths</string>
+          </property>
+          <layout class="QVBoxLayout" >
+           <property name="margin" >
+            <number>8</number>
+           </property>
+           <property name="spacing" >
+            <number>4</number>
+           </property>
+           <item>
+            <layout class="QGridLayout" >
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="spacing" >
+              <number>4</number>
+             </property>
+             <item row="1" column="0" >
+              <widget class="QPushButton" name="PushButton11" >
+               <property name="text" >
+                <string>Up</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="2" >
+              <widget class="QPushButton" name="PushButton13" >
+               <property name="text" >
+                <string>Remove</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1" >
+              <widget class="QPushButton" name="PushButton12" >
+               <property name="text" >
+                <string>Down</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="0" colspan="3" >
+              <widget class="Q3ListBox" name="fontpathlistbox" />
+             </item>
+            </layout>
+           </item>
+           <item>
+            <layout class="QGridLayout" >
+             <property name="margin" >
+              <number>0</number>
+             </property>
+             <property name="spacing" >
+              <number>4</number>
+             </property>
+             <item row="2" column="0" >
+              <spacer>
+               <property name="orientation" >
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeType" >
+                <enum>QSizePolicy::Minimum</enum>
+               </property>
+               <property name="sizeHint" >
+                <size>
+                 <width>20</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item row="2" column="2" >
+              <widget class="QPushButton" name="PushButton15" >
+               <property name="text" >
+                <string>Add</string>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1" >
+              <widget class="QPushButton" name="PushButton14" >
+               <property name="text" >
+                <string>Browse...</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="0" colspan="3" >
+              <widget class="QLabel" name="TextLabel15_2" >
+               <property name="text" >
+                <string>Press the &lt;b>Browse&lt;/b> button or enter a directory and press Enter to add them to the list.</string>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="0" colspan="3" >
+              <widget class="QLineEdit" name="fontpathlineedit" />
+             </item>
+            </layout>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>724</width>
+     <height>27</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="PopupMenu" >
+    <property name="geometry" >
+     <rect>
+      <x>0</x>
+      <y>0</y>
+      <width>800</width>
+      <height>480</height>
+     </rect>
+    </property>
+    <property name="title" >
+     <string>&amp;File</string>
+    </property>
+    <action name="" />
+    <action name="" />
+    <action name="" />
+    <addaction name="fileSaveAction" />
+    <addaction name="separator" />
+    <addaction name="fileExitAction" />
+   </widget>
+   <widget class="QMenu" name="PopupMenu_2" >
+    <property name="geometry" >
+     <rect>
+      <x>0</x>
+      <y>0</y>
+      <width>800</width>
+      <height>480</height>
+     </rect>
+    </property>
+    <property name="title" >
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="helpAboutAction" />
+    <addaction name="helpAboutQtAction" />
+   </widget>
+   <action name="" />
+   <action name="" />
+   <action name="" />
+   <addaction name="PopupMenu" />
+   <addaction name="separator" />
+   <addaction name="PopupMenu_2" />
+  </widget>
+  <action name="fileSaveAction" >
+   <property name="text" >
+    <string>&amp;Save</string>
+   </property>
+   <property name="iconText" >
+    <string>Save</string>
+   </property>
+   <property name="shortcut" >
+    <string>Ctrl+S</string>
+   </property>
+  </action>
+  <action name="fileExitAction" >
+   <property name="text" >
+    <string>E&amp;xit</string>
+   </property>
+   <property name="iconText" >
+    <string>Exit</string>
+   </property>
+   <property name="shortcut" >
+    <string/>
+   </property>
+  </action>
+  <action name="helpAboutAction" >
+   <property name="text" >
+    <string>&amp;About</string>
+   </property>
+   <property name="iconText" >
+    <string>About</string>
+   </property>
+   <property name="shortcut" >
+    <string/>
+   </property>
+  </action>
+  <action name="helpAboutQtAction" >
+   <property name="text" >
+    <string>About &amp;Qt</string>
+   </property>
+   <property name="iconText" >
+    <string>About Qt</string>
+   </property>
+  </action>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>Q3ListBox</class>
+   <extends></extends>
+   <header>q3listbox.h</header>
+   <container>0</container>
+   <pixmap></pixmap>
+  </customwidget>
+  <customwidget>
+   <class>ColorButton</class>
+   <extends></extends>
+   <header>colorbutton.h</header>
+   <container>0</container>
+   <pixmap></pixmap>
+  </customwidget>
+  <customwidget>
+   <class>Q3Frame</class>
+   <extends></extends>
+   <header>Qt3Support/Q3Frame</header>
+   <container>1</container>
+   <pixmap></pixmap>
+  </customwidget>
+  <customwidget>
+   <class>PreviewFrame</class>
+   <extends></extends>
+   <header>previewframe.h</header>
+   <container>0</container>
+   <pixmap></pixmap>
+  </customwidget>
+  <customwidget>
+   <class>Q3MainWindow</class>
+   <extends></extends>
+   <header>q3mainwindow.h</header>
+   <container>1</container>
+   <pixmap></pixmap>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>helpview</tabstop>
+  <tabstop>TabWidget3</tabstop>
+  <tabstop>familycombo</tabstop>
+  <tabstop>stylecombo</tabstop>
+  <tabstop>psizecombo</tabstop>
+  <tabstop>samplelineedit</tabstop>
+  <tabstop>familysubcombo</tabstop>
+  <tabstop>PushButton2</tabstop>
+  <tabstop>PushButton3</tabstop>
+  <tabstop>PushButton4</tabstop>
+  <tabstop>choosesubcombo</tabstop>
+  <tabstop>PushButton1</tabstop>
+  <tabstop>dcispin</tabstop>
+  <tabstop>cfispin</tabstop>
+  <tabstop>wslspin</tabstop>
+  <tabstop>effectcheckbox</tabstop>
+  <tabstop>menueffect</tabstop>
+  <tabstop>comboeffect</tabstop>
+  <tabstop>tooltipeffect</tabstop>
+  <tabstop>strutwidth</tabstop>
+  <tabstop>strutheight</tabstop>
+  <tabstop>sublistbox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/mydialog.ui b/tests/auto/uiloader/baseline/mydialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d765b307607e509bf85157ac384fc352b9de960a
--- /dev/null
+++ b/tests/auto/uiloader/baseline/mydialog.ui
@@ -0,0 +1,47 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>MyDialog</class>
+ <widget class="QDialog" name="MyDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>401</width>
+    <height>70</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Mach 2!</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="aLabel" >
+     <property name="text" >
+      <string>Join the life in the fastlane; - PCH enable your project today! -</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QPushButton" name="aButton" >
+     <property name="text" >
+      <string>&amp;Quit</string>
+     </property>
+     <property name="shortcut" >
+      <string>Alt+Q</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/myform.ui b/tests/auto/uiloader/baseline/myform.ui
new file mode 100644
index 0000000000000000000000000000000000000000..00702e860a744f887e5be4e59c15ad43a835e2c8
--- /dev/null
+++ b/tests/auto/uiloader/baseline/myform.ui
@@ -0,0 +1,130 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>Form</class>
+ <widget class="QWidget" name="Form" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>258</width>
+    <height>224</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Export Document</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Export Options</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="1" column="0" >
+       <widget class="QRadioButton" name="radioButton_2" >
+        <property name="text" >
+         <string>&amp;DocBook</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QRadioButton" name="radioButton" >
+        <property name="text" >
+         <string>&amp;LaTeX</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QCheckBox" name="checkBox_2" >
+        <property name="text" >
+         <string>Include p&amp;ictures</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0" >
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QCheckBox" name="checkBox" >
+        <property name="text" >
+         <string>&amp;Compress</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QRadioButton" name="radioButton_2_2" >
+        <property name="text" >
+         <string>&amp;HTML</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QRadioButton" name="radioButton_3" >
+        <property name="text" >
+         <string>&amp;PostScript</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" >
+       <widget class="QRadioButton" name="radioButton_4" >
+        <property name="text" >
+         <string>PD&amp;F</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QCheckBox" name="checkBox_3" >
+        <property name="text" >
+         <string>Include &amp;metadata</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" >
+       <widget class="QCheckBox" name="checkBox_4" >
+        <property name="text" >
+         <string>Create inde&amp;x</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/newactiondialog.ui b/tests/auto/uiloader/baseline/newactiondialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..ae6212f868b11647fe91c2cea7c46296e6ccb353
--- /dev/null
+++ b/tests/auto/uiloader/baseline/newactiondialog.ui
@@ -0,0 +1,202 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::NewActionDialog</class>
+ <widget class="QDialog" name="qdesigner_internal::NewActionDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>363</width>
+    <height>156</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>New Action...</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <layout class="QFormLayout" name="formLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>&amp;Text:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>editActionText</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="editActionText" >
+       <property name="minimumSize" >
+        <size>
+         <width>255</width>
+         <height>0</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="label_3" >
+       <property name="text" >
+        <string>Object &amp;name:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>editObjectName</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QLineEdit" name="editObjectName" />
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>&amp;Icon:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>iconSelector</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1" >
+      <layout class="QHBoxLayout" name="horizontalLayout" >
+       <item>
+        <widget class="qdesigner_internal::IconSelector" native="1" name="iconSelector" />
+       </item>
+       <item>
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::IconSelector</class>
+   <extends>QWidget</extends>
+   <header>iconselector_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>editActionText</tabstop>
+  <tabstop>editObjectName</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::NewActionDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>165</x>
+     <y>162</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>291</x>
+     <y>94</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::NewActionDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>259</x>
+     <y>162</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>293</x>
+     <y>128</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui b/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..2aa91f3e9e0a1aa90a207f3752d451acff872f90
--- /dev/null
+++ b/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui
@@ -0,0 +1,106 @@
+<ui version="4.0" >
+ <class>qdesigner_internal::NewDynamicPropertyDialog</class>
+ <widget class="QDialog" name="qdesigner_internal::NewDynamicPropertyDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>340</width>
+    <height>118</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Create Dynamic Property</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <layout class="QFormLayout" name="formLayout" >
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="m_lineEdit" >
+       <property name="minimumSize" >
+        <size>
+         <width>220</width>
+         <height>0</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Property Name</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <layout class="QHBoxLayout" name="horizontalLayout" >
+       <item>
+        <widget class="QComboBox" name="m_comboBox" />
+       </item>
+       <item>
+        <spacer name="horizontalSpacer" >
+         <property name="spacerName" stdset="0" >
+          <string>horizontalSpacer</string>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Property Type</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer>
+     <property name="spacerName" stdset="0" >
+      <string/>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="m_buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+     <property name="centerButtons" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/newform.ui b/tests/auto/uiloader/baseline/newform.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3f0a92dfb1ccb9e67400aad455c85e92bbef7d31
--- /dev/null
+++ b/tests/auto/uiloader/baseline/newform.ui
@@ -0,0 +1,153 @@
+<ui version="4.0" >
+ <author></author>
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>NewForm</class>
+ <widget class="QDialog" name="NewForm" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>495</width>
+    <height>319</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>New Form</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>1</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QTreeWidget" name="treeWidget" >
+       <property name="iconSize" >
+        <size>
+         <width>128</width>
+         <height>128</height>
+        </size>
+       </property>
+       <property name="rootIsDecorated" >
+        <bool>false</bool>
+       </property>
+       <property name="columnCount" >
+        <number>1</number>
+       </property>
+       <column>
+        <property name="text" >
+         <string>0</string>
+        </property>
+       </column>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="lblPreview" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>7</hsizetype>
+         <vsizetype>5</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="lineWidth" >
+        <number>1</number>
+       </property>
+       <property name="text" >
+        <string>Choose a template for a preview</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="margin" >
+        <number>5</number>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QFrame" name="horizontalLine" >
+     <property name="frameShape" >
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Sunken</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="chkShowOnStartup" >
+     <property name="text" >
+      <string>Show this Dialog on Startup</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" />
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>QDialogButtonBox</class>
+   <extends>QWidget</extends>
+   <header>qdialogbuttonbox.h</header>
+   <container>1</container>
+   <pixmap></pixmap>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/orderdialog.ui b/tests/auto/uiloader/baseline/orderdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..b44824778f09cc05f974f928124c1e43c75c94f2
--- /dev/null
+++ b/tests/auto/uiloader/baseline/orderdialog.ui
@@ -0,0 +1,198 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::OrderDialog</class>
+ <widget class="QDialog" name="qdesigner_internal::OrderDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>467</width>
+    <height>310</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Change Page Order</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Page Order</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <property name="leftMargin" >
+       <number>9</number>
+      </property>
+      <property name="topMargin" >
+       <number>9</number>
+      </property>
+      <property name="rightMargin" >
+       <number>9</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>9</number>
+      </property>
+      <item>
+       <widget class="QListWidget" name="pageList" >
+        <property name="minimumSize" >
+         <size>
+          <width>344</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="dragDropMode" >
+         <enum>QAbstractItemView::InternalMove</enum>
+        </property>
+        <property name="selectionMode" >
+         <enum>QAbstractItemView::ContiguousSelection</enum>
+        </property>
+        <property name="movement" >
+         <enum>QListView::Snap</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" >
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QToolButton" name="upButton" >
+          <property name="toolTip" >
+           <string>Move page up</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="downButton" >
+          <property name="toolTip" >
+           <string>Move page down</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="orientation" >
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>20</width>
+            <height>99</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::OrderDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>50</x>
+     <y>163</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>6</x>
+     <y>151</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::OrderDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>300</x>
+     <y>160</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>348</x>
+     <y>148</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/outputpage.ui b/tests/auto/uiloader/baseline/outputpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..755f8180853d974e1ba6a5c4d9ac37734f68e263
--- /dev/null
+++ b/tests/auto/uiloader/baseline/outputpage.ui
@@ -0,0 +1,95 @@
+<ui version="4.0" >
+ <class>OutputPage</class>
+ <widget class="QWidget" name="OutputPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>242</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Project file name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLineEdit" name="projectLineEdit" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Collection file name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QLineEdit" name="collectionLineEdit" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/pagefold.ui b/tests/auto/uiloader/baseline/pagefold.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7ae313c3318f7c4d85f1f0a004ac9b8fd86f9f83
--- /dev/null
+++ b/tests/auto/uiloader/baseline/pagefold.ui
@@ -0,0 +1,349 @@
+<ui version="4.0" >
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>392</width>
+    <height>412</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <layout class="QVBoxLayout" >
+    <property name="margin" >
+     <number>9</number>
+    </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <item>
+     <widget class="QFrame" name="mainFrame" >
+      <property name="frameShape" >
+       <enum>QFrame::StyledPanel</enum>
+      </property>
+      <property name="frameShadow" >
+       <enum>QFrame::Raised</enum>
+      </property>
+      <layout class="QGridLayout" >
+       <property name="margin" >
+        <number>9</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item row="0" column="1" colspan="3" >
+        <widget class="QComboBox" name="nameCombo" >
+         <property name="toolTip" >
+          <string>Specify your name</string>
+         </property>
+         <property name="editable" >
+          <bool>true</bool>
+         </property>
+         <property name="currentIndex" >
+          <number>-1</number>
+         </property>
+         <item>
+          <property name="text" >
+           <string>Girish</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Jasmin</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Simon</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Zack</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+       <item row="1" column="3" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="1" column="2" >
+        <widget class="QRadioButton" name="femaleRadioButton" >
+         <property name="styleSheet" >
+          <string>Check this if you are female</string>
+         </property>
+         <property name="text" >
+          <string>&amp;Female</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QLabel" name="genderLabel" >
+         <property name="text" >
+          <string>Gender:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0" >
+        <widget class="QLabel" name="ageLabel" >
+         <property name="text" >
+          <string>&amp;Age:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>ageSpinBox</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <widget class="QRadioButton" name="maleRadioButton" >
+         <property name="toolTip" >
+          <string>Check this if you are male</string>
+         </property>
+         <property name="text" >
+          <string>&amp;Male</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" >
+        <widget class="QLabel" name="nameLabel" >
+         <property name="text" >
+          <string>&amp;Name:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>nameCombo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0" >
+        <widget class="QLabel" name="passwordLabel" >
+         <property name="text" >
+          <string>&amp;Password:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>passwordEdit</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="3" >
+        <widget class="QSpinBox" name="ageSpinBox" >
+         <property name="toolTip" >
+          <string>Specify your age</string>
+         </property>
+         <property name="statusTip" >
+          <string>Specify your age</string>
+         </property>
+         <property name="minimum" >
+          <number>12</number>
+         </property>
+         <property name="value" >
+          <number>22</number>
+         </property>
+        </widget>
+       </item>
+       <item row="7" column="2" colspan="2" >
+        <widget class="QDialogButtonBox" name="buttonBox" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="standardButtons" >
+          <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="0" colspan="4" >
+        <widget class="QCheckBox" name="agreeCheckBox" >
+         <property name="toolTip" >
+          <string>Please read the LICENSE file before checking</string>
+         </property>
+         <property name="text" >
+          <string>I &amp;accept the terms and &amp;conditions</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1" colspan="3" >
+        <widget class="QLineEdit" name="passwordEdit" >
+         <property name="toolTip" >
+          <string>Specify your password</string>
+         </property>
+         <property name="statusTip" >
+          <string>Specify your password</string>
+         </property>
+         <property name="text" >
+          <string>Password</string>
+         </property>
+         <property name="echoMode" >
+          <enum>QLineEdit::Password</enum>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="1" colspan="3" >
+        <widget class="QListWidget" name="professionList" >
+         <property name="toolTip" >
+          <string>Select your profession</string>
+         </property>
+         <property name="statusTip" >
+          <string>Specify your name here</string>
+         </property>
+         <property name="whatsThis" >
+          <string>Specify your name here</string>
+         </property>
+         <property name="currentRow" >
+          <number>0</number>
+         </property>
+         <item>
+          <property name="text" >
+           <string>Developer</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Student</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Fisherman</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+       <item row="5" column="0" >
+        <widget class="QLabel" name="label" >
+         <property name="text" >
+          <string>Profession:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>professionList</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1" colspan="3" >
+        <widget class="QComboBox" name="countryCombo" >
+         <property name="toolTip" >
+          <string>Specify country of origin</string>
+         </property>
+         <property name="statusTip" >
+          <string>Specify country of origin</string>
+         </property>
+         <property name="currentIndex" >
+          <number>6</number>
+         </property>
+         <item>
+          <property name="text" >
+           <string>Egypt</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>France</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Germany</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>India</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Italy</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Korea</string>
+          </property>
+         </item>
+         <item>
+          <property name="text" >
+           <string>Norway</string>
+          </property>
+         </item>
+        </widget>
+       </item>
+       <item row="4" column="0" >
+        <widget class="QLabel" name="countryLabel" >
+         <property name="text" >
+          <string>Pro&amp;fession</string>
+         </property>
+         <property name="buddy" >
+          <cstring>professionList</cstring>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>392</width>
+     <height>25</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menu_File" >
+    <property name="title" >
+     <string>&amp;File</string>
+    </property>
+    <addaction name="editStyleAction" />
+    <addaction name="separator" />
+    <addaction name="exitAction" />
+   </widget>
+   <widget class="QMenu" name="menu_Help" >
+    <property name="title" >
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="aboutAction" />
+    <addaction name="separator" />
+    <addaction name="aboutQtAction" />
+   </widget>
+   <addaction name="menu_File" />
+   <addaction name="menu_Help" />
+  </widget>
+  <widget class="QStatusBar" name="statusbar" />
+  <action name="exitAction" >
+   <property name="text" >
+    <string>&amp;Exit</string>
+   </property>
+  </action>
+  <action name="aboutQtAction" >
+   <property name="text" >
+    <string>About Qt</string>
+   </property>
+  </action>
+  <action name="editStyleAction" >
+   <property name="text" >
+    <string>Edit &amp;Style</string>
+   </property>
+  </action>
+  <action name="aboutAction" >
+   <property name="text" >
+    <string>About</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/paletteeditor.ui b/tests/auto/uiloader/baseline/paletteeditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1cc6a185830c8c3d92c3b8705b0d958e1a3dc250
--- /dev/null
+++ b/tests/auto/uiloader/baseline/paletteeditor.ui
@@ -0,0 +1,264 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::PaletteEditor</class>
+ <widget class="QDialog" name="qdesigner_internal::PaletteEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>365</width>
+    <height>409</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>7</hsizetype>
+    <vsizetype>7</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit Palette</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="advancedBox" >
+     <property name="minimumSize" >
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="maximumSize" >
+      <size>
+       <width>16777215</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="title" >
+      <string>Tune Palette</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="0" column="1" >
+       <widget class="QtColorButton" name="buildButton" >
+        <property name="sizePolicy" >
+         <sizepolicy>
+          <hsizetype>7</hsizetype>
+          <vsizetype>13</vsizetype>
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="4" >
+       <widget class="QTreeView" name="paletteView" >
+        <property name="minimumSize" >
+         <size>
+          <width>0</width>
+          <height>200</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3" >
+       <widget class="QRadioButton" name="detailsRadio" >
+        <property name="text" >
+         <string>Show Details</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" >
+       <widget class="QRadioButton" name="computeRadio" >
+        <property name="text" >
+         <string>Compute Details</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Quick</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="GroupBox126" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>7</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Preview</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="0" column="2" >
+       <widget class="QRadioButton" name="disabledRadio" >
+        <property name="text" >
+         <string>Disabled</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QRadioButton" name="inactiveRadio" >
+        <property name="text" >
+         <string>Inactive</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QRadioButton" name="activeRadio" >
+        <property name="text" >
+         <string>Active</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="3" >
+       <widget class="qdesigner_internal::PreviewFrame" native="1" name="previewFrame" >
+        <property name="sizePolicy" >
+         <sizepolicy>
+          <hsizetype>7</hsizetype>
+          <vsizetype>7</vsizetype>
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QtColorButton</class>
+   <extends>QToolButton</extends>
+   <header>qtcolorbutton.h</header>
+  </customwidget>
+  <customwidget>
+   <class>qdesigner_internal::PreviewFrame</class>
+   <extends>QWidget</extends>
+   <header>previewframe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::PaletteEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>180</x>
+     <y>331</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>134</x>
+     <y>341</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::PaletteEditor</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>287</x>
+     <y>329</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>302</x>
+     <y>342</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui b/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4de888aa318ec4c13e324fb76316e19ef0c99255
--- /dev/null
+++ b/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui
@@ -0,0 +1,617 @@
+<ui version="4.0" stdsetdef="1" >
+  <author></author>
+  <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+  <exportmacro></exportmacro>
+  <class>PaletteEditorAdvancedBase</class>
+  <widget class="QDialog" name="PaletteEditorAdvancedBase" >
+    <property name="objectName" >
+      <string notr="true" >PaletteEditorAdvancedBase</string>
+    </property>
+    <property name="enabled" >
+      <bool>true</bool>
+    </property>
+    <property name="geometry" >
+      <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>295</width>
+        <height>346</height>
+      </rect>
+    </property>
+    <property name="windowTitle" >
+      <string>Tune Palette</string>
+    </property>
+    <property name="sizeGripEnabled" >
+      <bool>true</bool>
+    </property>
+    <property name="whatsThis" stdset="0" >
+      <string>&lt;b>Edit Palette&lt;/b>&lt;p>Change the palette of the current widget or form.&lt;/p>&lt;p>Use a generated palette or select colors for each color group and each color role.&lt;/p>&lt;p>The palette can be tested with different widget layouts in the preview section.&lt;/p></string>
+    </property>
+    <layout class="QVBoxLayout" >
+      <property name="objectName" >
+        <string notr="true" >unnamed</string>
+      </property>
+      <property name="margin" >
+        <number>11</number>
+      </property>
+      <property name="spacing" >
+        <number>6</number>
+      </property>
+      <item>
+        <layout class="QHBoxLayout" >
+          <property name="objectName" >
+            <string notr="true" >unnamed</string>
+          </property>
+          <property name="margin" >
+            <number>0</number>
+          </property>
+          <property name="spacing" >
+            <number>6</number>
+          </property>
+          <item>
+            <widget class="QLabel" name="TextLabel1" >
+              <property name="objectName" >
+                <string notr="true" >TextLabel1</string>
+              </property>
+              <property name="text" >
+                <string>Select &amp;Palette:</string>
+              </property>
+              <property name="buddy" stdset="0" >
+                <cstring>paletteCombo</cstring>
+              </property>
+            </widget>
+          </item>
+          <item>
+            <widget class="QComboBox" name="paletteCombo" >
+              <property name="objectName" >
+                <string notr="true" >paletteCombo</string>
+              </property>
+              <item>
+                <property name="text" >
+                  <string>Active Palette</string>
+                </property>
+              </item>
+              <item>
+                <property name="text" >
+                  <string>Inactive Palette</string>
+                </property>
+              </item>
+              <item>
+                <property name="text" >
+                  <string>Disabled Palette</string>
+                </property>
+              </item>
+            </widget>
+          </item>
+        </layout>
+      </item>
+      <item>
+        <widget class="Q3ButtonGroup" name="ButtonGroup1" >
+          <property name="objectName" >
+            <string notr="true" >ButtonGroup1</string>
+          </property>
+          <property name="sizePolicy" >
+            <sizepolicy>
+              <hsizetype>5</hsizetype>
+              <vsizetype>4</vsizetype>
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+            </sizepolicy>
+          </property>
+          <property name="title" >
+            <string>Auto</string>
+          </property>
+          <layout class="QVBoxLayout" >
+            <property name="objectName" >
+              <string notr="true" >unnamed</string>
+            </property>
+            <property name="margin" >
+              <number>11</number>
+            </property>
+            <property name="spacing" >
+              <number>6</number>
+            </property>
+            <item>
+              <widget class="QCheckBox" name="checkBuildInactive" >
+                <property name="objectName" >
+                  <string notr="true" >checkBuildInactive</string>
+                </property>
+                <property name="text" >
+                  <string>Build inactive palette from active</string>
+                </property>
+                <property name="checked" >
+                  <bool>true</bool>
+                </property>
+              </widget>
+            </item>
+            <item>
+              <widget class="QCheckBox" name="checkBuildDisabled" >
+                <property name="objectName" >
+                  <string notr="true" >checkBuildDisabled</string>
+                </property>
+                <property name="text" >
+                  <string>Build disabled palette from active</string>
+                </property>
+                <property name="checked" >
+                  <bool>true</bool>
+                </property>
+              </widget>
+            </item>
+          </layout>
+        </widget>
+      </item>
+      <item>
+        <widget class="Q3GroupBox" name="groupCentral" >
+          <property name="objectName" >
+            <string notr="true" >groupCentral</string>
+          </property>
+          <property name="title" >
+            <string>Central color &amp;roles</string>
+          </property>
+          <layout class="QVBoxLayout" >
+            <property name="objectName" >
+              <string notr="true" >unnamed</string>
+            </property>
+            <property name="margin" >
+              <number>11</number>
+            </property>
+            <property name="spacing" >
+              <number>6</number>
+            </property>
+            <item>
+              <widget class="QComboBox" name="comboCentral" >
+                <property name="objectName" >
+                  <string notr="true" >comboCentral</string>
+                </property>
+                <property name="toolTip" stdset="0" >
+                  <string>Choose central color role</string>
+                </property>
+                <property name="whatsThis" stdset="0" >
+                  <string>&lt;b>Select a color role.&lt;/b>&lt;p>Available central roles are: &lt;ul> &lt;li>Window - general background color.&lt;/li> &lt;li>WindowText - general foreground color. &lt;/li> &lt;li>Base - used as background color for e.g. text entry widgets, usually white or another light color. &lt;/li> &lt;li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. &lt;/li> &lt;li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. &lt;/li> &lt;li>ButtonText - a foreground color used with the Button color. &lt;/li> &lt;li>Highlight - a color to indicate a selected or highlighted item. &lt;/li> &lt;li>HighlightedText - a text color that contrasts to Highlight. &lt;/li> &lt;li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. &lt;/li> &lt;/ul> &lt;/p></string>
+                </property>
+                <item>
+                  <property name="text" >
+                    <string>Window</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>WindowText</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>Button</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>Base</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>Text</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>BrightText</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>ButtonText</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>Highlight</string>
+                  </property>
+                </item>
+                <item>
+                  <property name="text" >
+                    <string>HighlightedText</string>
+                  </property>
+                </item>
+              </widget>
+            </item>
+            <item>
+              <layout class="QHBoxLayout" >
+                <property name="objectName" >
+                  <string notr="true" >unnamed</string>
+                </property>
+                <property name="margin" >
+                  <number>0</number>
+                </property>
+                <property name="spacing" >
+                  <number>6</number>
+                </property>
+                <item>
+                  <spacer name="Horizontal_Spacing1" >
+                    <property name="sizeHint" >
+                      <size>
+                        <width>20</width>
+                        <height>20</height>
+                      </size>
+                    </property>
+                    <property name="sizeType" >
+                      <enum>Expanding</enum>
+                    </property>
+                    <property name="orientation" >
+                      <enum>Horizontal</enum>
+                    </property>
+                  </spacer>
+                </item>
+                <item>
+                  <widget class="QLabel" name="labelCentral" >
+                    <property name="objectName" >
+                      <string notr="true" >labelCentral</string>
+                    </property>
+                    <property name="sizePolicy" >
+                      <sizepolicy>
+                        <hsizetype>1</hsizetype>
+                        <vsizetype>1</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                      </sizepolicy>
+                    </property>
+                    <property name="minimumSize" >
+                      <size>
+                        <width>0</width>
+                        <height>0</height>
+                      </size>
+                    </property>
+                    <property name="text" >
+                      <string>&amp;Select Color:</string>
+                    </property>
+                    <property name="buddy" stdset="0" >
+                      <cstring>buttonCentral</cstring>
+                    </property>
+                  </widget>
+                </item>
+                <item>
+                  <widget class="ColorButton" name="buttonCentral" >
+                    <property name="objectName" >
+                      <string notr="true" >buttonCentral</string>
+                    </property>
+                    <property name="sizePolicy" >
+                      <sizepolicy>
+                        <hsizetype>0</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                      </sizepolicy>
+                    </property>
+                    <property name="focusPolicy" >
+                      <enum>Qt::TabFocus</enum>
+                    </property>
+                    <property name="toolTip" stdset="0" >
+                      <string>Choose a color</string>
+                    </property>
+                    <property name="whatsThis" stdset="0" >
+                      <string>Choose a color for the selected central color role.</string>
+                    </property>
+                  </widget>
+                </item>
+              </layout>
+            </item>
+          </layout>
+        </widget>
+      </item>
+      <item>
+        <widget class="Q3GroupBox" name="groupEffect" >
+          <property name="objectName" >
+            <string notr="true" >groupEffect</string>
+          </property>
+          <property name="title" >
+            <string>3-D shadow &amp;effects</string>
+          </property>
+          <layout class="QVBoxLayout" >
+            <property name="objectName" >
+              <string notr="true" >unnamed</string>
+            </property>
+            <property name="margin" >
+              <number>11</number>
+            </property>
+            <property name="spacing" >
+              <number>6</number>
+            </property>
+            <item>
+              <layout class="QHBoxLayout" >
+                <property name="objectName" >
+                  <string notr="true" >unnamed</string>
+                </property>
+                <property name="margin" >
+                  <number>0</number>
+                </property>
+                <property name="spacing" >
+                  <number>6</number>
+                </property>
+                <item>
+                  <widget class="QCheckBox" name="checkBuildEffect" >
+                    <property name="objectName" >
+                      <string notr="true" >checkBuildEffect</string>
+                    </property>
+                    <property name="text" >
+                      <string>Build &amp;from button color</string>
+                    </property>
+                    <property name="checked" >
+                      <bool>true</bool>
+                    </property>
+                    <property name="toolTip" stdset="0" >
+                      <string>Generate shadings</string>
+                    </property>
+                    <property name="whatsThis" stdset="0" >
+                      <string>Check to let 3D-effect colors be calculated from button-color.</string>
+                    </property>
+                  </widget>
+                </item>
+                <item>
+                  <widget class="QComboBox" name="comboEffect" >
+                    <property name="objectName" >
+                      <string notr="true" >comboEffect</string>
+                    </property>
+                    <property name="toolTip" stdset="0" >
+                      <string>Choose 3D-effect color role</string>
+                    </property>
+                    <property name="whatsThis" stdset="0" >
+                      <string>&lt;b>Select a color role.&lt;/b>&lt;p>Available effect roles are: &lt;ul> &lt;li>Light - lighter than Button color. &lt;/li> &lt;li>Midlight - between Button and Light. &lt;/li> &lt;li>Mid - between Button and Dark. &lt;/li> &lt;li>Dark - darker than Button. &lt;/li> &lt;li>Shadow - a very dark color. &lt;/li> &lt;/ul></string>
+                    </property>
+                    <item>
+                      <property name="text" >
+                        <string>Light</string>
+                      </property>
+                    </item>
+                    <item>
+                      <property name="text" >
+                        <string>Midlight</string>
+                      </property>
+                    </item>
+                    <item>
+                      <property name="text" >
+                        <string>Mid</string>
+                      </property>
+                    </item>
+                    <item>
+                      <property name="text" >
+                        <string>Dark</string>
+                      </property>
+                    </item>
+                    <item>
+                      <property name="text" >
+                        <string>Shadow</string>
+                      </property>
+                    </item>
+                  </widget>
+                </item>
+              </layout>
+            </item>
+            <item>
+              <layout class="QHBoxLayout" >
+                <property name="objectName" >
+                  <string notr="true" >unnamed</string>
+                </property>
+                <property name="margin" >
+                  <number>0</number>
+                </property>
+                <property name="spacing" >
+                  <number>6</number>
+                </property>
+                <item>
+                  <spacer name="Horizontal_Spacing3" >
+                    <property name="sizeHint" >
+                      <size>
+                        <width>20</width>
+                        <height>20</height>
+                      </size>
+                    </property>
+                    <property name="sizeType" >
+                      <enum>Expanding</enum>
+                    </property>
+                    <property name="orientation" >
+                      <enum>Horizontal</enum>
+                    </property>
+                  </spacer>
+                </item>
+                <item>
+                  <widget class="QLabel" name="labelEffect" >
+                    <property name="objectName" >
+                      <string notr="true" >labelEffect</string>
+                    </property>
+                    <property name="sizePolicy" >
+                      <sizepolicy>
+                        <hsizetype>1</hsizetype>
+                        <vsizetype>1</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                      </sizepolicy>
+                    </property>
+                    <property name="minimumSize" >
+                      <size>
+                        <width>0</width>
+                        <height>0</height>
+                      </size>
+                    </property>
+                    <property name="text" >
+                      <string>Select Co&amp;lor:</string>
+                    </property>
+                    <property name="buddy" stdset="0" >
+                      <cstring>buttonEffect</cstring>
+                    </property>
+                  </widget>
+                </item>
+                <item>
+                  <widget class="ColorButton" name="buttonEffect" >
+                    <property name="objectName" >
+                      <string notr="true" >buttonEffect</string>
+                    </property>
+                    <property name="sizePolicy" >
+                      <sizepolicy>
+                        <hsizetype>0</hsizetype>
+                        <vsizetype>0</vsizetype>
+                        <horstretch>0</horstretch>
+                        <verstretch>0</verstretch>
+                      </sizepolicy>
+                    </property>
+                    <property name="focusPolicy" >
+                      <enum>Qt::TabFocus</enum>
+                    </property>
+                    <property name="toolTip" stdset="0" >
+                      <string>Choose a color</string>
+                    </property>
+                    <property name="whatsThis" stdset="0" >
+                      <string>Choose a color for the selected effect color role.</string>
+                    </property>
+                  </widget>
+                </item>
+              </layout>
+            </item>
+          </layout>
+        </widget>
+      </item>
+      <item>
+        <layout class="QHBoxLayout" >
+          <property name="objectName" >
+            <string notr="true" >unnamed</string>
+          </property>
+          <property name="margin" >
+            <number>0</number>
+          </property>
+          <property name="spacing" >
+            <number>6</number>
+          </property>
+          <item>
+            <spacer name="Horizontal_Spacing2" >
+              <property name="sizeHint" >
+                <size>
+                  <width>20</width>
+                  <height>20</height>
+                </size>
+              </property>
+              <property name="sizeType" >
+                <enum>Expanding</enum>
+              </property>
+              <property name="orientation" >
+                <enum>Horizontal</enum>
+              </property>
+            </spacer>
+          </item>
+          <item>
+            <widget class="QPushButton" name="buttonOk" >
+              <property name="objectName" >
+                <string notr="true" >buttonOk</string>
+              </property>
+              <property name="text" >
+                <string>OK</string>
+              </property>
+              <property name="autoDefault" >
+                <bool>true</bool>
+              </property>
+              <property name="default" >
+                <bool>true</bool>
+              </property>
+              <property name="whatsThis" stdset="0" >
+                <string>Close dialog and apply all changes.</string>
+              </property>
+            </widget>
+          </item>
+          <item>
+            <widget class="QPushButton" name="buttonCancel" >
+              <property name="objectName" >
+                <string notr="true" >buttonCancel</string>
+              </property>
+              <property name="text" >
+                <string>Cancel</string>
+              </property>
+              <property name="autoDefault" >
+                <bool>true</bool>
+              </property>
+              <property name="whatsThis" stdset="0" >
+                <string>Close dialog and discard all changes.</string>
+              </property>
+            </widget>
+          </item>
+        </layout>
+      </item>
+    </layout>
+  </widget>
+  <pixmapfunction></pixmapfunction>
+  <customwidgets>
+    <customwidget>
+      <class>ColorButton</class>
+      <extends></extends>
+      <header location="local" >colorbutton.h</header>
+      <sizehint>
+        <width>40</width>
+        <height>25</height>
+      </sizehint>
+      <container>0</container>
+      <sizepolicy>
+        <hordata>5</hordata>
+        <verdata>5</verdata>
+      </sizepolicy>
+      <pixmap>image0</pixmap>
+      <properties>
+        <property type="Color" >color</property>
+        <property type="Pixmap" >pixmap</property>
+      </properties>
+    </customwidget>
+  </customwidgets>
+  <tabstops>
+    <tabstop>buttonOk</tabstop>
+    <tabstop>buttonCancel</tabstop>
+    <tabstop>paletteCombo</tabstop>
+    <tabstop>checkBuildInactive</tabstop>
+    <tabstop>checkBuildDisabled</tabstop>
+    <tabstop>comboCentral</tabstop>
+    <tabstop>buttonCentral</tabstop>
+    <tabstop>checkBuildEffect</tabstop>
+    <tabstop>comboEffect</tabstop>
+    <tabstop>buttonEffect</tabstop>
+  </tabstops>
+  <images>
+    <image name="image0" >
+      <data format="XPM.GZ" length="646" >789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+  </images>
+</ui>
diff --git a/tests/auto/uiloader/baseline/passworddialog.ui b/tests/auto/uiloader/baseline/passworddialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7c1665867aa17b938ac9f4b53dba6896d85c62f7
--- /dev/null
+++ b/tests/auto/uiloader/baseline/passworddialog.ui
@@ -0,0 +1,111 @@
+<ui version="4.0" >
+ <class>PasswordDialog</class>
+ <widget class="QDialog" name="PasswordDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>399</width>
+    <height>148</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Authentication Required</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QLabel" name="iconLabel" >
+       <property name="text" >
+        <string>DUMMY ICON</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="introLabel" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>INTRO TEXT DUMMY</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Username:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLineEdit" name="userNameLineEdit" />
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="lblPassword" >
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QLineEdit" name="passwordLineEdit" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>PasswordDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PasswordDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/pathpage.ui b/tests/auto/uiloader/baseline/pathpage.ui
new file mode 100644
index 0000000000000000000000000000000000000000..89083915ddf93fae5c811e34b00f167f01226727
--- /dev/null
+++ b/tests/auto/uiloader/baseline/pathpage.ui
@@ -0,0 +1,114 @@
+<ui version="4.0" >
+ <class>PathPage</class>
+ <widget class="QWidget" name="PathPage" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>243</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>File filters:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <widget class="QLineEdit" name="filterLineEdit" />
+   </item>
+   <item row="1" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>10</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" colspan="3" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Documentation source file paths:</string>
+     </property>
+    </widget>
+   </item>
+   <item rowspan="3" row="3" column="0" colspan="3" >
+    <widget class="QListWidget" name="pathListWidget" />
+   </item>
+   <item row="3" column="3" >
+    <widget class="QPushButton" name="addButton" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Add</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="3" >
+    <widget class="QPushButton" name="removeButton" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Remove</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="3" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>51</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="6" column="2" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>31</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/phrasebookbox.ui b/tests/auto/uiloader/baseline/phrasebookbox.ui
new file mode 100644
index 0000000000000000000000000000000000000000..66558ea28acb0e327fc18169553597cb7dec7928
--- /dev/null
+++ b/tests/auto/uiloader/baseline/phrasebookbox.ui
@@ -0,0 +1,211 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>PhraseBookBox</class>
+ <widget class="QDialog" name="PhraseBookBox" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>596</width>
+    <height>454</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit Phrase Book</string>
+  </property>
+  <property name="whatsThis" >
+   <string>This window allows you to add, modify, or delete phrases in a phrase book.</string>
+  </property>
+  <layout class="QHBoxLayout" name="unnamed" >
+   <item>
+    <layout class="QVBoxLayout" name="inputsLayout" >
+     <item>
+      <layout class="QGridLayout" name="gridLayout" >
+       <item row="1" column="0" >
+        <widget class="QLabel" name="target" >
+         <property name="text" >
+          <string>&amp;Translation:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>targetLed</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <widget class="QLineEdit" name="targetLed" >
+         <property name="whatsThis" >
+          <string>This is the phrase in the target language corresponding to the source phrase.</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" >
+        <widget class="QLabel" name="source" >
+         <property name="text" >
+          <string>S&amp;ource phrase:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>sourceLed</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" >
+        <widget class="QLineEdit" name="definitionLed" >
+         <property name="whatsThis" >
+          <string>This is a definition for the source phrase.</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+        <widget class="QLineEdit" name="sourceLed" >
+         <property name="whatsThis" >
+          <string>This is the phrase in the source language.</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0" >
+        <widget class="QLabel" name="definition" >
+         <property name="text" >
+          <string>&amp;Definition:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>definitionLed</cstring>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QTreeView" name="phraseList" >
+       <property name="rootIsDecorated" >
+        <bool>false</bool>
+       </property>
+       <property name="uniformRowHeights" >
+        <bool>true</bool>
+       </property>
+       <property name="itemsExpandable" >
+        <bool>false</bool>
+       </property>
+       <property name="sortingEnabled" >
+        <bool>true</bool>
+       </property>
+       <property name="expandsOnDoubleClick" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="buttonLayout" >
+     <item>
+      <widget class="QPushButton" name="newBut" >
+       <property name="whatsThis" >
+        <string>Click here to add the phrase to the phrase book.</string>
+       </property>
+       <property name="text" >
+        <string>&amp;New Phrase</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeBut" >
+       <property name="whatsThis" >
+        <string>Click here to remove the phrase from the phrase book.</string>
+       </property>
+       <property name="text" >
+        <string>&amp;Remove Phrase</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="saveBut" >
+       <property name="whatsThis" >
+        <string>Click here to save the changes made.</string>
+       </property>
+       <property name="text" >
+        <string>&amp;Save</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closeBut" >
+       <property name="whatsThis" >
+        <string>Click here to close this window.</string>
+       </property>
+       <property name="text" >
+        <string>Close</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="spacer1" >
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>20</width>
+         <height>51</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+  <tabstop>sourceLed</tabstop>
+  <tabstop>targetLed</tabstop>
+  <tabstop>definitionLed</tabstop>
+  <tabstop>newBut</tabstop>
+  <tabstop>removeBut</tabstop>
+  <tabstop>saveBut</tabstop>
+  <tabstop>closeBut</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/plugindialog.ui b/tests/auto/uiloader/baseline/plugindialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d4bec98834fc5f0870f49ee460581243bccee3e0
--- /dev/null
+++ b/tests/auto/uiloader/baseline/plugindialog.ui
@@ -0,0 +1,153 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>PluginDialog</class>
+ <widget class="QDialog" name="PluginDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>401</width>
+    <height>331</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Plugin Information</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <property name="leftMargin" >
+    <number>8</number>
+   </property>
+   <property name="topMargin" >
+    <number>8</number>
+   </property>
+   <property name="rightMargin" >
+    <number>8</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>8</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>TextLabel</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTreeWidget" name="treeWidget" >
+     <property name="textElideMode" >
+      <enum>Qt::ElideNone</enum>
+     </property>
+     <column>
+      <property name="text" >
+       <string>1</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="message" >
+     <property name="text" >
+      <string>TextLabel</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PluginDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>154</x>
+     <y>307</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>401</x>
+     <y>280</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/preferencesdialog.ui b/tests/auto/uiloader/baseline/preferencesdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3092fcb53cc6e54f0a023cac9cc3ef364f87cd63
--- /dev/null
+++ b/tests/auto/uiloader/baseline/preferencesdialog.ui
@@ -0,0 +1,165 @@
+<ui version="4.0" >
+ <class>PreferencesDialog</class>
+ <widget class="QDialog" name="PreferencesDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>455</width>
+    <height>359</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Preferences</string>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QGroupBox" name="m_uiModeGroupBox" >
+         <property name="title" >
+          <string>User Interface Mode</string>
+         </property>
+         <layout class="QVBoxLayout" >
+          <item>
+           <widget class="QComboBox" name="m_uiModeCombo" />
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="FontPanel" name="m_fontPanel" />
+       </item>
+       <item>
+        <widget class="qdesigner_internal::PreviewConfigurationWidget" name="m_previewConfigurationWidget" />
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QGroupBox" name="m_templatePathGroupBox" >
+         <property name="title" >
+          <string>Additional Template Paths</string>
+         </property>
+         <layout class="QGridLayout" >
+          <item row="0" column="0" colspan="3" >
+           <widget class="QListWidget" name="m_templatePathListWidget" />
+          </item>
+          <item row="1" column="0" >
+           <widget class="QToolButton" name="m_addTemplatePathButton" >
+            <property name="text" >
+             <string>...</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QToolButton" name="m_removeTemplatePathButton" >
+            <property name="text" >
+             <string>...</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2" >
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" >
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="qdesigner_internal::GridPanel" name="m_gridPanel" />
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="m_dialogButtonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>FontPanel</class>
+   <extends>QGroupBox</extends>
+   <header>fontpanel.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>qdesigner_internal::GridPanel</class>
+   <extends>QGroupBox</extends>
+   <header>gridpanel_p.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>qdesigner_internal::PreviewConfigurationWidget</class>
+   <extends>QGroupBox</extends>
+   <header location="global" >previewconfigurationwidget_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>m_dialogButtonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>PreferencesDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>m_dialogButtonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PreferencesDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/previewconfigurationwidget.ui b/tests/auto/uiloader/baseline/previewconfigurationwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..2f18766ff7d861ced1192e1f202f0ea746c1e7c7
--- /dev/null
+++ b/tests/auto/uiloader/baseline/previewconfigurationwidget.ui
@@ -0,0 +1,91 @@
+<ui version="4.0" >
+ <class>PreviewConfigurationWidget</class>
+ <widget class="QGroupBox" name="PreviewConfigurationWidget" >
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <property name="title" >
+   <string>Print/Preview Configuration</string>
+  </property>
+  <property name="checkable" >
+   <bool>true</bool>
+  </property>
+  <layout class="QFormLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="m_styleLabel" >
+     <property name="text" >
+      <string>Style</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QComboBox" name="m_styleCombo" />
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="m_appStyleSheetLabel" >
+     <property name="text" >
+      <string>Style sheet</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="qdesigner_internal::TextPropertyEditor" name="m_appStyleSheetLineEdit" >
+       <property name="minimumSize" >
+        <size>
+         <width>149</width>
+         <height>0</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="m_appStyleSheetChangeButton" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="m_appStyleSheetClearButton" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="m_skinLabel" >
+     <property name="text" >
+      <string>Device skin</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QComboBox" name="m_skinCombo" />
+     </item>
+     <item>
+      <widget class="QToolButton" name="m_skinRemoveButton" >
+       <property name="text" >
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::TextPropertyEditor</class>
+   <extends>QLineEdit</extends>
+   <header location="global" >textpropertyeditor_p.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/previewdialogbase.ui b/tests/auto/uiloader/baseline/previewdialogbase.ui
new file mode 100644
index 0000000000000000000000000000000000000000..593ee33577db57fb89899472b341f1a348c67a0f
--- /dev/null
+++ b/tests/auto/uiloader/baseline/previewdialogbase.ui
@@ -0,0 +1,224 @@
+<ui version="4.0" >
+ <class>PreviewDialogBase</class>
+ <widget class="QDialog" name="PreviewDialogBase" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>733</width>
+    <height>479</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Print Preview</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>&amp;Paper Size:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>paperSizeCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="paperSizeCombo" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>&amp;Orientation:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>paperOrientationCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="paperOrientationCombo" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>1</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QTreeWidget" name="pageList" >
+       <property name="indentation" >
+        <number>0</number>
+       </property>
+       <property name="rootIsDecorated" >
+        <bool>false</bool>
+       </property>
+       <property name="uniformRowHeights" >
+        <bool>true</bool>
+       </property>
+       <property name="itemsExpandable" >
+        <bool>false</bool>
+       </property>
+       <property name="columnCount" >
+        <number>1</number>
+       </property>
+       <column>
+        <property name="text" >
+         <string>1</string>
+        </property>
+       </column>
+      </widget>
+     </item>
+     <item>
+      <widget class="QScrollArea" native="1" name="previewArea" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>5</vsizetype>
+         <horstretch>1</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QProgressBar" name="progressBar" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>7</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>1</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="value" >
+        <number>0</number>
+       </property>
+       <property name="textVisible" >
+        <bool>false</bool>
+       </property>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QScrollArea</class>
+   <extends>QWidget</extends>
+   <header>qscrollarea.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>PreviewDialogBase</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>696</x>
+     <y>526</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>677</x>
+     <y>446</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PreviewDialogBase</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>587</x>
+     <y>529</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>547</x>
+     <y>448</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/previewwidget.ui b/tests/auto/uiloader/baseline/previewwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d38ab7cf30b420e48df7ad0447905dff6c56ce2b
--- /dev/null
+++ b/tests/auto/uiloader/baseline/previewwidget.ui
@@ -0,0 +1,238 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::PreviewWidget</class>
+ <widget class="QWidget" name="qdesigner_internal::PreviewWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>471</width>
+    <height>251</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy>
+    <hsizetype>1</hsizetype>
+    <vsizetype>1</vsizetype>
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Preview Window</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item rowspan="3" row="0" column="1" >
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QLineEdit" name="LineEdit1" >
+       <property name="text" >
+        <string>LineEdit</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="ComboBox1" >
+       <item>
+        <property name="text" >
+         <string>ComboBox</string>
+        </property>
+       </item>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>0</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <widget class="QSpinBox" name="SpinBox1" />
+       </item>
+       <item>
+        <widget class="QPushButton" name="PushButton1" >
+         <property name="text" >
+          <string>PushButton</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QScrollBar" name="ScrollBar1" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QSlider" name="Slider1" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QListWidget" name="listWidget" >
+       <property name="maximumSize" >
+        <size>
+         <width>32767</width>
+         <height>50</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="0" colspan="2" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QProgressBar" name="ProgressBar1" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QGroupBox" name="ButtonGroup2" >
+     <property name="title" >
+      <string>ButtonGroup2</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QCheckBox" name="CheckBox1" >
+        <property name="text" >
+         <string>CheckBox1</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="CheckBox2" >
+        <property name="text" >
+         <string>CheckBox2</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <widget class="QGroupBox" name="ButtonGroup1" >
+     <property name="title" >
+      <string>ButtonGroup</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QRadioButton" name="RadioButton1" >
+        <property name="text" >
+         <string>RadioButton1</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="RadioButton2" >
+        <property name="text" >
+         <string>RadioButton2</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="RadioButton3" >
+        <property name="text" >
+         <string>RadioButton3</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/previewwidgetbase.ui b/tests/auto/uiloader/baseline/previewwidgetbase.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3e0570092ddf9070ef115271fe2956c6c5becfb6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/previewwidgetbase.ui
@@ -0,0 +1,340 @@
+<ui version="4.0" stdsetdef="1" >
+  <author></author>
+  <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+  <exportmacro></exportmacro>
+  <class>PreviewWidgetBase</class>
+  <widget class="QWidget" name="PreviewWidgetBase" >
+    <property name="objectName" >
+      <string notr="true" >PreviewWidgetBase</string>
+    </property>
+    <property name="geometry" >
+      <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>378</width>
+        <height>236</height>
+      </rect>
+    </property>
+    <property name="sizePolicy" >
+      <sizepolicy>
+        <hsizetype>1</hsizetype>
+        <vsizetype>1</vsizetype>
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+      </sizepolicy>
+    </property>
+    <property name="windowTitle" >
+      <string>Preview Window</string>
+    </property>
+    <layout class="QVBoxLayout" >
+      <property name="objectName" >
+        <string notr="true" >unnamed</string>
+      </property>
+      <property name="margin" >
+        <number>11</number>
+      </property>
+      <property name="spacing" >
+        <number>6</number>
+      </property>
+      <item>
+        <layout class="QHBoxLayout" >
+          <property name="objectName" >
+            <string notr="true" >unnamed</string>
+          </property>
+          <property name="margin" >
+            <number>0</number>
+          </property>
+          <property name="spacing" >
+            <number>6</number>
+          </property>
+          <item>
+            <layout class="QVBoxLayout" >
+              <property name="objectName" >
+                <string notr="true" >unnamed</string>
+              </property>
+              <property name="margin" >
+                <number>0</number>
+              </property>
+              <property name="spacing" >
+                <number>6</number>
+              </property>
+              <item>
+                <widget class="Q3ButtonGroup" name="ButtonGroup1" >
+                  <property name="objectName" >
+                    <string notr="true" >ButtonGroup1</string>
+                  </property>
+                  <property name="title" >
+                    <string>ButtonGroup</string>
+                  </property>
+                  <layout class="QVBoxLayout" >
+                    <property name="objectName" >
+                      <string notr="true" >unnamed</string>
+                    </property>
+                    <property name="margin" >
+                      <number>11</number>
+                    </property>
+                    <property name="spacing" >
+                      <number>6</number>
+                    </property>
+                    <item>
+                      <widget class="QRadioButton" name="RadioButton1" >
+                        <property name="objectName" >
+                          <string notr="true" >RadioButton1</string>
+                        </property>
+                        <property name="text" >
+                          <string>RadioButton1</string>
+                        </property>
+                        <property name="checked" >
+                          <bool>true</bool>
+                        </property>
+                      </widget>
+                    </item>
+                    <item>
+                      <widget class="QRadioButton" name="RadioButton2" >
+                        <property name="objectName" >
+                          <string notr="true" >RadioButton2</string>
+                        </property>
+                        <property name="text" >
+                          <string>RadioButton2</string>
+                        </property>
+                      </widget>
+                    </item>
+                    <item>
+                      <widget class="QRadioButton" name="RadioButton3" >
+                        <property name="objectName" >
+                          <string notr="true" >RadioButton3</string>
+                        </property>
+                        <property name="text" >
+                          <string>RadioButton3</string>
+                        </property>
+                      </widget>
+                    </item>
+                  </layout>
+                </widget>
+              </item>
+              <item>
+                <widget class="Q3ButtonGroup" name="ButtonGroup2" >
+                  <property name="objectName" >
+                    <string notr="true" >ButtonGroup2</string>
+                  </property>
+                  <property name="title" >
+                    <string>ButtonGroup2</string>
+                  </property>
+                  <layout class="QVBoxLayout" >
+                    <property name="objectName" >
+                      <string notr="true" >unnamed</string>
+                    </property>
+                    <property name="margin" >
+                      <number>11</number>
+                    </property>
+                    <property name="spacing" >
+                      <number>6</number>
+                    </property>
+                    <item>
+                      <widget class="QCheckBox" name="CheckBox1" >
+                        <property name="objectName" >
+                          <string notr="true" >CheckBox1</string>
+                        </property>
+                        <property name="text" >
+                          <string>CheckBox1</string>
+                        </property>
+                        <property name="checked" >
+                          <bool>true</bool>
+                        </property>
+                      </widget>
+                    </item>
+                    <item>
+                      <widget class="QCheckBox" name="CheckBox2" >
+                        <property name="objectName" >
+                          <string notr="true" >CheckBox2</string>
+                        </property>
+                        <property name="text" >
+                          <string>CheckBox2</string>
+                        </property>
+                      </widget>
+                    </item>
+                  </layout>
+                </widget>
+              </item>
+              <item>
+                <widget class="QProgressBar" name="ProgressBar1" >
+                  <property name="objectName" >
+                    <string notr="true" >ProgressBar1</string>
+                  </property>
+                  <property name="value" >
+                    <number>50</number>
+                  </property>
+                </widget>
+              </item>
+            </layout>
+          </item>
+          <item>
+            <layout class="QVBoxLayout" >
+              <property name="objectName" >
+                <string notr="true" >unnamed</string>
+              </property>
+              <property name="margin" >
+                <number>0</number>
+              </property>
+              <property name="spacing" >
+                <number>6</number>
+              </property>
+              <item>
+                <widget class="QLineEdit" name="LineEdit1" >
+                  <property name="objectName" >
+                    <string notr="true" >LineEdit1</string>
+                  </property>
+                  <property name="text" >
+                    <string>LineEdit</string>
+                  </property>
+                </widget>
+              </item>
+              <item>
+                <widget class="QComboBox" name="ComboBox1" >
+                  <property name="objectName" >
+                    <string notr="true" >ComboBox1</string>
+                  </property>
+                  <item>
+                    <property name="text" >
+                      <string>ComboBox</string>
+                    </property>
+                  </item>
+                </widget>
+              </item>
+              <item>
+                <layout class="QHBoxLayout" >
+                  <property name="objectName" >
+                    <string notr="true" >unnamed</string>
+                  </property>
+                  <property name="margin" >
+                    <number>0</number>
+                  </property>
+                  <property name="spacing" >
+                    <number>6</number>
+                  </property>
+                  <item>
+                    <widget class="QSpinBox" name="SpinBox1" >
+                      <property name="objectName" >
+                        <string notr="true" >SpinBox1</string>
+                      </property>
+                    </widget>
+                  </item>
+                  <item>
+                    <widget class="QPushButton" name="PushButton1" >
+                      <property name="objectName" >
+                        <string notr="true" >PushButton1</string>
+                      </property>
+                      <property name="text" >
+                        <string>PushButton</string>
+                      </property>
+                    </widget>
+                  </item>
+                </layout>
+              </item>
+              <item>
+                <widget class="QScrollBar" name="ScrollBar1" >
+                  <property name="objectName" >
+                    <string notr="true" >ScrollBar1</string>
+                  </property>
+                  <property name="orientation" >
+                    <enum>Qt::Horizontal</enum>
+                  </property>
+                </widget>
+              </item>
+              <item>
+                <widget class="QSlider" name="Slider1" >
+                  <property name="objectName" >
+                    <string notr="true" >Slider1</string>
+                  </property>
+                  <property name="orientation" >
+                    <enum>Qt::Horizontal</enum>
+                  </property>
+                </widget>
+              </item>
+              <item>
+                <widget class="QTextEdit" name="textView" >
+                  <property name="objectName" >
+                    <string notr="true" >textView</string>
+                  </property>
+                  <property name="maximumSize" >
+                    <size>
+                      <width>32767</width>
+                      <height>50</height>
+                    </size>
+                  </property>
+                  <property name="readOnly" >
+                    <bool>true</bool>
+                  </property>
+                  <property name="text" >
+                    <string>&lt;p>
+&lt;a href=&quot;http://qt.nokia.com&quot;>http://qt.nokia.com&lt;/a>
+&lt;/p>
+&lt;p>
+&lt;a href=&quot;http://www.kde.org&quot;>http://www.kde.org&lt;/a>
+&lt;/p></string>
+                  </property>
+                </widget>
+              </item>
+            </layout>
+          </item>
+        </layout>
+      </item>
+      <item>
+        <spacer name="Spacer2" >
+          <property name="sizeHint" >
+            <size>
+              <width>20</width>
+              <height>20</height>
+            </size>
+          </property>
+          <property name="sizeType" >
+            <enum>Expanding</enum>
+          </property>
+          <property name="orientation" >
+            <enum>Vertical</enum>
+          </property>
+        </spacer>
+      </item>
+    </layout>
+  </widget>
+  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+</ui>
diff --git a/tests/auto/uiloader/baseline/proxy.ui b/tests/auto/uiloader/baseline/proxy.ui
new file mode 100644
index 0000000000000000000000000000000000000000..62a8be62733b64fe483b6fdac37c157af5f48ea6
--- /dev/null
+++ b/tests/auto/uiloader/baseline/proxy.ui
@@ -0,0 +1,104 @@
+<ui version="4.0" >
+ <class>ProxyDialog</class>
+ <widget class="QDialog" name="ProxyDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>369</width>
+    <height>144</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Proxy Authentication</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="iconLabel" >
+     <property name="text" >
+      <string>ICON</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <widget class="QLabel" name="introLabel" >
+     <property name="text" >
+      <string>Connect to proxy</string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="QLabel" name="usernameLabel" >
+     <property name="text" >
+      <string>Username:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2" >
+    <widget class="QLineEdit" name="userNameLineEdit" />
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <widget class="QLabel" name="passwordLabel" >
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2" >
+    <widget class="QLineEdit" name="passwordLineEdit" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="3" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ProxyDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ProxyDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qfiledialog.ui b/tests/auto/uiloader/baseline/qfiledialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..85f5991722ecdba2b2ec8d53b295719a80202037
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qfiledialog.ui
@@ -0,0 +1,320 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>QFileDialog</class>
+ <widget class="QDialog" name="QFileDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>521</width>
+    <height>316</height>
+   </rect>
+  </property>
+  <property name="sizeGripEnabled" >
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="lookInLabel" >
+     <property name="text" >
+      <string>Look in:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QFileDialogComboBox" name="lookInCombo" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Ignored" >
+         <horstretch>1</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize" >
+        <size>
+         <width>50</width>
+         <height>0</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="backButton" >
+       <property name="toolTip" >
+        <string>Back</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="forwardButton" >
+       <property name="toolTip" >
+        <string>Forward</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toParentButton" >
+       <property name="toolTip" >
+        <string>Parent Directory</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="newFolderButton" >
+       <property name="toolTip" >
+        <string>Create New Folder</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="listModeButton" >
+       <property name="toolTip" >
+        <string>List View</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="detailModeButton" >
+       <property name="toolTip" >
+        <string>Detail View</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" colspan="3" >
+    <widget class="QSplitter" name="splitter" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QSidebar" name="sidebar" />
+     <widget class="QFrame" name="frame" >
+      <property name="frameShape" >
+       <enum>QFrame::NoFrame</enum>
+      </property>
+      <property name="frameShadow" >
+       <enum>QFrame::Raised</enum>
+      </property>
+      <layout class="QVBoxLayout" >
+       <property name="spacing" >
+        <number>0</number>
+       </property>
+       <property name="leftMargin" >
+        <number>0</number>
+       </property>
+       <property name="topMargin" >
+        <number>0</number>
+       </property>
+       <property name="rightMargin" >
+        <number>0</number>
+       </property>
+       <property name="bottomMargin" >
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QStackedWidget" name="stackedWidget" >
+         <property name="currentIndex" >
+          <number>0</number>
+         </property>
+         <widget class="QWidget" name="page" >
+          <layout class="QVBoxLayout" >
+           <property name="spacing" >
+            <number>0</number>
+           </property>
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+           </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QFileDialogListView" name="listView" />
+           </item>
+          </layout>
+         </widget>
+         <widget class="QWidget" name="page_2" >
+          <layout class="QVBoxLayout" >
+           <property name="spacing" >
+            <number>0</number>
+           </property>
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+           </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QFileDialogTreeView" name="treeView" />
+           </item>
+          </layout>
+         </widget>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="fileNameLabel" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize" >
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QFileDialogLineEdit" name="fileNameEdit" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item rowspan="2" row="2" column="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" >
+    <widget class="QLabel" name="fileTypeLabel" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Files of type:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QComboBox" name="fileTypeCombo" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QFileDialogTreeView</class>
+   <extends>QTreeView</extends>
+   <header>qfiledialog_p.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QFileDialogListView</class>
+   <extends>QListView</extends>
+   <header>qfiledialog_p.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QSidebar</class>
+   <extends>QListWidget</extends>
+   <header>qsidebar_p.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QFileDialogLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>qfiledialog_p.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QFileDialogComboBox</class>
+   <extends>QComboBox</extends>
+   <header>qfiledialog_p.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>lookInCombo</tabstop>
+  <tabstop>backButton</tabstop>
+  <tabstop>forwardButton</tabstop>
+  <tabstop>toParentButton</tabstop>
+  <tabstop>newFolderButton</tabstop>
+  <tabstop>listModeButton</tabstop>
+  <tabstop>detailModeButton</tabstop>
+  <tabstop>sidebar</tabstop>
+  <tabstop>listView</tabstop>
+  <tabstop>fileNameEdit</tabstop>
+  <tabstop>fileTypeCombo</tabstop>
+  <tabstop>buttonBox</tabstop>
+  <tabstop>treeView</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qpagesetupwidget.ui b/tests/auto/uiloader/baseline/qpagesetupwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..ace2ab8f4470f1c4e9352f3c9f5db9dccb915596
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qpagesetupwidget.ui
@@ -0,0 +1,353 @@
+<ui version="4.0" >
+ <class>QPageSetupWidget</class>
+ <widget class="QWidget" name="QPageSetupWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>416</width>
+    <height>488</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_3" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <item row="0" column="0" colspan="2" >
+    <layout class="QHBoxLayout" name="horizontalLayout_4" >
+     <item>
+      <widget class="QComboBox" name="unit" />
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_3" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="QGroupBox" name="groupBox_2" >
+     <property name="title" >
+      <string>Paper</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2" >
+      <item row="0" column="0" >
+       <widget class="QLabel" name="pageSizeLabel" >
+        <property name="text" >
+         <string>Page size:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>paperSize</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="paperSize" />
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="widthLabel" >
+        <property name="text" >
+         <string>Width:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>paperWidth</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <layout class="QHBoxLayout" name="horizontalLayout_3" >
+        <item>
+         <widget class="QDoubleSpinBox" name="paperWidth" >
+          <property name="maximum" >
+           <double>9999.989999999999782</double>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="heightLabel" >
+          <property name="text" >
+           <string>Height:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>paperHeight</cstring>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QDoubleSpinBox" name="paperHeight" >
+          <property name="maximum" >
+           <double>9999.989999999999782</double>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="paperSourceLabel" >
+        <property name="text" >
+         <string>Paper source:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>paperSource</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QComboBox" name="paperSource" />
+      </item>
+      <item row="1" column="2" >
+       <spacer name="horizontalSpacer_4" >
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QGroupBox" name="groupBox_3" >
+     <property name="title" >
+      <string>Orientation</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout" >
+      <item>
+       <widget class="QRadioButton" name="portrait" >
+        <property name="text" >
+         <string>Portrait</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="landscape" >
+        <property name="text" >
+         <string>Landscape</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="reverseLandscape" >
+        <property name="text" >
+         <string>Reverse landscape</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="reversePortrait" >
+        <property name="text" >
+         <string>Reverse portrait</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="verticalSpacer_5" >
+        <property name="orientation" >
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0" >
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item rowspan="2" row="2" column="1" >
+    <widget class="QWidget" native="1" name="preview" />
+   </item>
+   <item row="3" column="0" >
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Margins</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2" >
+      <item>
+       <layout class="QGridLayout" name="gridLayout" >
+        <item row="0" column="1" >
+         <widget class="QDoubleSpinBox" name="topMargin" >
+          <property name="toolTip" >
+           <string>top margin</string>
+          </property>
+          <property name="accessibleName" >
+           <string>top margin</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+          <property name="maximum" >
+           <double>999.990000000000009</double>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" colspan="3" >
+         <layout class="QHBoxLayout" name="horizontalLayout" >
+          <item>
+           <spacer name="horizontalSpacer_7" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QDoubleSpinBox" name="leftMargin" >
+            <property name="toolTip" >
+             <string>left margin</string>
+            </property>
+            <property name="accessibleName" >
+             <string>left margin</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="maximum" >
+             <double>999.990000000000009</double>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType" >
+             <enum>QSizePolicy::MinimumExpanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>0</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QDoubleSpinBox" name="rightMargin" >
+            <property name="toolTip" >
+             <string>right margin</string>
+            </property>
+            <property name="accessibleName" >
+             <string>right margin</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="maximum" >
+             <double>999.990000000000009</double>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_8" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item row="2" column="1" >
+         <widget class="QDoubleSpinBox" name="bottomMargin" >
+          <property name="toolTip" >
+           <string>bottom margin</string>
+          </property>
+          <property name="accessibleName" >
+           <string>bottom margin</string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+          <property name="maximum" >
+           <double>999.990000000000009</double>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="2" >
+         <spacer name="horizontalSpacer_2" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeType" >
+           <enum>QSizePolicy::MinimumExpanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>0</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="0" column="0" >
+         <spacer name="horizontalSpacer_5" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeType" >
+           <enum>QSizePolicy::MinimumExpanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>0</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="4" column="0" >
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qprintpropertieswidget.ui b/tests/auto/uiloader/baseline/qprintpropertieswidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..26fa09599e357121b165fd2cadc3662b529afd4e
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qprintpropertieswidget.ui
@@ -0,0 +1,70 @@
+<ui version="4.0" >
+ <class>QPrintPropertiesWidget</class>
+ <widget class="QWidget" name="QPrintPropertiesWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>396</width>
+    <height>288</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_4" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QTabWidget" name="tabs" >
+     <property name="currentIndex" >
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="tabPage" >
+      <property name="geometry" >
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>392</width>
+        <height>261</height>
+       </rect>
+      </property>
+      <attribute name="title" >
+       <string>Page</string>
+      </attribute>
+      <layout class="QHBoxLayout" name="horizontalLayout" >
+       <item>
+        <widget class="QPageSetupWidget" native="1" name="pageSetup" />
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="cupsPropertiesPage" >
+      <attribute name="title" >
+       <string>Advanced</string>
+      </attribute>
+      <layout class="QHBoxLayout" name="horizontalLayout_2" >
+       <item>
+        <widget class="QTreeView" name="treeView" >
+         <property name="alternatingRowColors" >
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QPageSetupWidget</class>
+   <extends>QWidget</extends>
+   <header>qpagesetupdialog_unix_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qprintsettingsoutput.ui b/tests/auto/uiloader/baseline/qprintsettingsoutput.ui
new file mode 100644
index 0000000000000000000000000000000000000000..de8f4faeeb2f83221cfce40815c7e0c597271aff
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qprintsettingsoutput.ui
@@ -0,0 +1,371 @@
+<ui version="4.0" >
+ <class>QPrintSettingsOutput</class>
+ <widget class="QWidget" name="QPrintSettingsOutput" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>416</width>
+    <height>166</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QTabWidget" name="tabs" >
+     <property name="currentIndex" >
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="copiesTab" >
+      <property name="geometry" >
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>412</width>
+        <height>139</height>
+       </rect>
+      </property>
+      <attribute name="title" >
+       <string>Copies</string>
+      </attribute>
+      <layout class="QHBoxLayout" name="horizontalLayout" >
+       <item>
+        <widget class="QGroupBox" name="gbPrintRange" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Minimum" hsizetype="Preferred" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="title" >
+          <string>Print range</string>
+         </property>
+         <layout class="QVBoxLayout" name="_3" >
+          <property name="spacing" >
+           <number>4</number>
+          </property>
+          <property name="margin" >
+           <number>6</number>
+          </property>
+          <item>
+           <widget class="QRadioButton" name="printAll" >
+            <property name="text" >
+             <string>Print all</string>
+            </property>
+            <property name="checked" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="_4" >
+            <property name="spacing" >
+             <number>6</number>
+            </property>
+            <property name="margin" >
+             <number>0</number>
+            </property>
+            <item>
+             <widget class="QRadioButton" name="printRange" >
+              <property name="text" >
+               <string>Pages from</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="from" >
+              <property name="enabled" >
+               <bool>false</bool>
+              </property>
+              <property name="minimum" >
+               <number>1</number>
+              </property>
+              <property name="maximum" >
+               <number>999</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_3" >
+              <property name="text" >
+               <string>to</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="to" >
+              <property name="enabled" >
+               <bool>false</bool>
+              </property>
+              <property name="minimum" >
+               <number>1</number>
+              </property>
+              <property name="maximum" >
+               <number>999</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer>
+              <property name="orientation" >
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0" >
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="printSelection" >
+            <property name="text" >
+             <string>Selection</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="verticalSpacer" >
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>1</width>
+              <height>1</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="groupBox" >
+         <property name="title" >
+          <string>Output Settings</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout" >
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>Copies:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>copies</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" colspan="2" >
+           <widget class="QSpinBox" name="copies" >
+            <property name="minimum" >
+             <number>1</number>
+            </property>
+            <property name="maximum" >
+             <number>999</number>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3" >
+           <spacer name="horizontalSpacer" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>91</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="0" colspan="2" >
+           <widget class="QCheckBox" name="collate" >
+            <property name="text" >
+             <string>Collate</string>
+            </property>
+           </widget>
+          </item>
+          <item rowspan="2" row="1" column="2" colspan="2" >
+           <widget class="QLabel" name="outputIcon" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Ignored" hsizetype="Ignored" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" colspan="2" >
+           <widget class="QCheckBox" name="reverse" >
+            <property name="text" >
+             <string>Reverse</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" colspan="4" >
+           <spacer name="verticalSpacer_2" >
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>0</width>
+              <height>1</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="optionsTab" >
+      <property name="geometry" >
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>412</width>
+        <height>139</height>
+       </rect>
+      </property>
+      <attribute name="title" >
+       <string>Options</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_2" >
+       <item row="0" column="1" >
+        <widget class="QGroupBox" name="colorMode" >
+         <property name="title" >
+          <string>Color Mode</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_4" >
+          <item row="2" column="0" >
+           <spacer name="verticalSpacer_6" >
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>1</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QRadioButton" name="color" >
+            <property name="text" >
+             <string>Color</string>
+            </property>
+           </widget>
+          </item>
+          <item rowspan="3" row="0" column="1" >
+           <widget class="QLabel" name="colorIcon" />
+          </item>
+          <item row="1" column="0" >
+           <widget class="QRadioButton" name="grayscale" >
+            <property name="text" >
+             <string>Grayscale</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="0" >
+        <widget class="QGroupBox" name="duplex" >
+         <property name="title" >
+          <string>Duplex Printing</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout" >
+          <item>
+           <widget class="QRadioButton" name="noDuplex" >
+            <property name="text" >
+             <string>None</string>
+            </property>
+            <property name="checked" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="duplexLong" >
+            <property name="text" >
+             <string>Long side</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="duplexShort" >
+            <property name="text" >
+             <string>Short side</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="verticalSpacer" >
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>1</width>
+              <height>0</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>printRange</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>from</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>76</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>122</x>
+     <y>57</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>printRange</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>to</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>69</x>
+     <y>67</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>215</x>
+     <y>67</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qprintwidget.ui b/tests/auto/uiloader/baseline/qprintwidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..8a4f3bde0a2803820d4365aa046dd33a68985767
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qprintwidget.ui
@@ -0,0 +1,116 @@
+<ui version="4.0" >
+ <class>QPrintWidget</class>
+ <widget class="QWidget" name="QPrintWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>443</width>
+    <height>175</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="printerGroup" >
+     <property name="title" >
+      <string>Printer</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>&amp;Name:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>printers</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="printers" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+          <horstretch>3</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" >
+       <widget class="QPushButton" name="properties" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+          <horstretch>1</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string>P&amp;roperties</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="label_2" >
+        <property name="text" >
+         <string>Location:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QLabel" name="location" />
+      </item>
+      <item row="1" column="2" >
+       <widget class="QCheckBox" name="preview" >
+        <property name="text" >
+         <string>Preview</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="label_3" >
+        <property name="text" >
+         <string>Type:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QLabel" name="type" />
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="lOutput" >
+        <property name="text" >
+         <string>Output &amp;file:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>filename</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" colspan="2" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
+        <item>
+         <widget class="QLineEdit" name="filename" />
+        </item>
+        <item>
+         <widget class="QToolButton" name="fileBrowser" >
+          <property name="text" >
+           <string>...</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui b/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..91a8700579da81428922b743fa67aa6c94b2b7ca
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui
@@ -0,0 +1,224 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>QSqlConnectionDialogUi</class>
+ <widget class="QDialog" name="QSqlConnectionDialogUi" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>315</width>
+    <height>302</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Connect...</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="connGroupBox" >
+     <property name="title" >
+      <string>Connection settings</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>8</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="comboDriver" />
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="textLabel4" >
+        <property name="text" >
+         <string>&amp;Username:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>editUsername</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="textLabel2" >
+        <property name="text" >
+         <string>D&amp;river</string>
+        </property>
+        <property name="buddy" >
+         <cstring>comboDriver</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QLineEdit" name="editDatabase" />
+      </item>
+      <item row="5" column="1" >
+       <widget class="QSpinBox" name="portSpinBox" >
+        <property name="specialValueText" >
+         <string>Default</string>
+        </property>
+        <property name="maximum" >
+         <number>65535</number>
+        </property>
+        <property name="minimum" >
+         <number>-1</number>
+        </property>
+        <property name="value" >
+         <number>-1</number>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="textLabel3" >
+        <property name="text" >
+         <string>Database Name:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>editDatabase</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" >
+       <widget class="QLineEdit" name="editPassword" >
+        <property name="echoMode" >
+         <enum>QLineEdit::Password</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QLineEdit" name="editUsername" />
+      </item>
+      <item row="4" column="1" >
+       <widget class="QLineEdit" name="editHostname" />
+      </item>
+      <item row="4" column="0" >
+       <widget class="QLabel" name="textLabel5" >
+        <property name="text" >
+         <string>&amp;Hostname:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>editHostname</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0" >
+       <widget class="QLabel" name="textLabel5_2" >
+        <property name="text" >
+         <string>P&amp;ort:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>portSpinBox</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="textLabel4_2" >
+        <property name="text" >
+         <string>&amp;Password:</string>
+        </property>
+        <property name="buddy" >
+         <cstring>editPassword</cstring>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="dbCheckBox" >
+       <property name="text" >
+        <string>Us&amp;e predefined in-memory database</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>&amp;OK</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>&amp;Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <tabstops>
+  <tabstop>comboDriver</tabstop>
+  <tabstop>editDatabase</tabstop>
+  <tabstop>editUsername</tabstop>
+  <tabstop>editPassword</tabstop>
+  <tabstop>editHostname</tabstop>
+  <tabstop>portSpinBox</tabstop>
+  <tabstop>dbCheckBox</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qtgradientdialog.ui b/tests/auto/uiloader/baseline/qtgradientdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..0c5578fd0b448dbda48b432da796c2126f52c58d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qtgradientdialog.ui
@@ -0,0 +1,121 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>QtGradientDialog</class>
+ <widget class="QDialog" name="QtGradientDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>178</width>
+    <height>81</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit Gradient</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QtGradientEditor" name="gradientEditor" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QtGradientEditor</class>
+   <extends>QFrame</extends>
+   <header>qtgradienteditor.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>QtGradientDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>72</x>
+     <y>224</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>21</x>
+     <y>243</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>QtGradientDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>168</x>
+     <y>233</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>152</x>
+     <y>251</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qtgradienteditor.ui b/tests/auto/uiloader/baseline/qtgradienteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..7d7a3344135b991c0f0410d9d4dc210f14a6d1f3
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qtgradienteditor.ui
@@ -0,0 +1,1377 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>QtGradientEditor</class>
+ <widget class="QWidget" name="QtGradientEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>364</width>
+    <height>518</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <widget class="QFrame" name="frame" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>69</y>
+     <width>193</width>
+     <height>150</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="frameShape" >
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow" >
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="spacing" >
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QtGradientWidget" native="1" name="gradientWidget" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="toolTip" >
+       <string>Gradient Editor</string>
+      </property>
+      <property name="whatsThis" >
+       <string>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag &amp; drop.</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="label1" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>69</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>1</string>
+   </property>
+  </widget>
+  <widget class="QDoubleSpinBox" name="spinBox1" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>69</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="keyboardTracking" >
+    <bool>false</bool>
+   </property>
+   <property name="decimals" >
+    <number>3</number>
+   </property>
+   <property name="maximum" >
+    <double>1.000000000000000</double>
+   </property>
+   <property name="singleStep" >
+    <double>0.010000000000000</double>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label2" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>99</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>2</string>
+   </property>
+  </widget>
+  <widget class="QDoubleSpinBox" name="spinBox2" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>99</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="keyboardTracking" >
+    <bool>false</bool>
+   </property>
+   <property name="decimals" >
+    <number>3</number>
+   </property>
+   <property name="maximum" >
+    <double>1.000000000000000</double>
+   </property>
+   <property name="singleStep" >
+    <double>0.010000000000000</double>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label3" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>129</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>3</string>
+   </property>
+  </widget>
+  <widget class="QDoubleSpinBox" name="spinBox3" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>129</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="keyboardTracking" >
+    <bool>false</bool>
+   </property>
+   <property name="decimals" >
+    <number>3</number>
+   </property>
+   <property name="maximum" >
+    <double>1.000000000000000</double>
+   </property>
+   <property name="singleStep" >
+    <double>0.010000000000000</double>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label4" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>159</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>4</string>
+   </property>
+  </widget>
+  <widget class="QDoubleSpinBox" name="spinBox4" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>159</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="keyboardTracking" >
+    <bool>false</bool>
+   </property>
+   <property name="decimals" >
+    <number>3</number>
+   </property>
+   <property name="maximum" >
+    <double>1.000000000000000</double>
+   </property>
+   <property name="singleStep" >
+    <double>0.010000000000000</double>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label5" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>189</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>5</string>
+   </property>
+  </widget>
+  <widget class="QDoubleSpinBox" name="spinBox5" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>189</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="keyboardTracking" >
+    <bool>false</bool>
+   </property>
+   <property name="decimals" >
+    <number>3</number>
+   </property>
+   <property name="maximum" >
+    <double>1.000000000000000</double>
+   </property>
+   <property name="singleStep" >
+    <double>0.010000000000000</double>
+   </property>
+  </widget>
+  <widget class="QtGradientStopsWidget" native="1" name="gradientStopsWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>225</y>
+     <width>193</width>
+     <height>67</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Gradient Stops Editor</string>
+   </property>
+   <property name="whatsThis" >
+    <string>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag &amp; drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="zoomLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>231</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Zoom</string>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="zoomAllButton" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>260</y>
+     <width>72</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Reset Zoom</string>
+   </property>
+   <property name="text" >
+    <string>Reset Zoom</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="positionLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>304</y>
+     <width>64</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>Position</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="hLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>335</y>
+     <width>32</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Hue</string>
+   </property>
+   <property name="text" >
+    <string>H</string>
+   </property>
+  </widget>
+  <widget class="QFrame" name="frame_2" >
+   <property name="geometry" >
+    <rect>
+     <x>48</x>
+     <y>333</y>
+     <width>155</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="frameShape" >
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow" >
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QtColorLine" native="1" name="hueColorLine" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="toolTip" >
+       <string>Hue</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="hueLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>335</y>
+     <width>64</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="text" >
+    <string>Hue</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="sLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>364</y>
+     <width>32</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Saturation</string>
+   </property>
+   <property name="text" >
+    <string>S</string>
+   </property>
+  </widget>
+  <widget class="QFrame" name="frame_5" >
+   <property name="geometry" >
+    <rect>
+     <x>48</x>
+     <y>362</y>
+     <width>155</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="frameShape" >
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow" >
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QtColorLine" native="1" name="saturationColorLine" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="toolTip" >
+       <string>Saturation</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="saturationLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>364</y>
+     <width>64</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="text" >
+    <string>Sat</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="vLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>393</y>
+     <width>32</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Value</string>
+   </property>
+   <property name="text" >
+    <string>V</string>
+   </property>
+  </widget>
+  <widget class="QFrame" name="frame_3" >
+   <property name="geometry" >
+    <rect>
+     <x>48</x>
+     <y>391</y>
+     <width>155</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="frameShape" >
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow" >
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QtColorLine" native="1" name="valueColorLine" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="toolTip" >
+       <string>Value</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="valueLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>393</y>
+     <width>64</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="text" >
+    <string>Val</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="aLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>422</y>
+     <width>32</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Alpha</string>
+   </property>
+   <property name="text" >
+    <string>A</string>
+   </property>
+  </widget>
+  <widget class="QFrame" name="frame_4" >
+   <property name="geometry" >
+    <rect>
+     <x>48</x>
+     <y>420</y>
+     <width>155</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="frameShape" >
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow" >
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QtColorLine" native="1" name="alphaColorLine" >
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="toolTip" >
+       <string>Alpha</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="alphaLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>422</y>
+     <width>64</width>
+     <height>18</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="text" >
+    <string>Alpha</string>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="typeComboBox" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>40</y>
+     <width>79</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Type</string>
+   </property>
+  </widget>
+  <widget class="QComboBox" name="spreadComboBox" >
+   <property name="geometry" >
+    <rect>
+     <x>96</x>
+     <y>40</y>
+     <width>72</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Spread</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="colorLabel" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>298</y>
+     <width>32</width>
+     <height>29</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="text" >
+    <string>Color</string>
+   </property>
+  </widget>
+  <widget class="QtColorButton" name="colorButton" >
+   <property name="geometry" >
+    <rect>
+     <x>48</x>
+     <y>300</y>
+     <width>26</width>
+     <height>25</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Current stop's color</string>
+   </property>
+   <property name="text" >
+    <string/>
+   </property>
+  </widget>
+  <widget class="QRadioButton" name="hsvRadioButton" >
+   <property name="geometry" >
+    <rect>
+     <x>80</x>
+     <y>301</y>
+     <width>49</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Show HSV specification</string>
+   </property>
+   <property name="text" >
+    <string>HSV</string>
+   </property>
+   <property name="checked" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QRadioButton" name="rgbRadioButton" >
+   <property name="geometry" >
+    <rect>
+     <x>135</x>
+     <y>301</y>
+     <width>49</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Show RGB specification</string>
+   </property>
+   <property name="text" >
+    <string>RGB</string>
+   </property>
+  </widget>
+  <widget class="QWidget" native="1" name="positionWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>304</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QDoubleSpinBox" name="positionSpinBox" >
+      <property name="toolTip" >
+       <string>Current stop's position</string>
+      </property>
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="decimals" >
+       <number>3</number>
+      </property>
+      <property name="minimum" >
+       <double>0.000000000000000</double>
+      </property>
+      <property name="maximum" >
+       <double>1.000000000000000</double>
+      </property>
+      <property name="singleStep" >
+       <double>0.010000000000000</double>
+      </property>
+      <property name="value" >
+       <double>0.000000000000000</double>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="hueWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>333</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QSpinBox" name="hueSpinBox" >
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="maximum" >
+       <number>359</number>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="saturationWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>362</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QSpinBox" name="saturationSpinBox" >
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="maximum" >
+       <number>255</number>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="valueWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>391</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QSpinBox" name="valueSpinBox" >
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="maximum" >
+       <number>255</number>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="alphaWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>420</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QSpinBox" name="alphaSpinBox" >
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="maximum" >
+       <number>255</number>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="zoomWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>279</x>
+     <y>231</y>
+     <width>73</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QSpinBox" name="zoomSpinBox" >
+      <property name="keyboardTracking" >
+       <bool>false</bool>
+      </property>
+      <property name="suffix" >
+       <string>%</string>
+      </property>
+      <property name="minimum" >
+       <number>100</number>
+      </property>
+      <property name="maximum" >
+       <number>10000</number>
+      </property>
+      <property name="singleStep" >
+       <number>100</number>
+      </property>
+      <property name="value" >
+       <number>100</number>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="line1Widget" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>219</y>
+     <width>143</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="Line" name="line1" >
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="line2Widget" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>292</y>
+     <width>143</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="Line" name="line2" >
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QWidget" native="1" name="zoomButtonsWidget" >
+   <property name="geometry" >
+    <rect>
+     <x>209</x>
+     <y>260</y>
+     <width>64</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <layout class="QHBoxLayout" >
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+    <property name="topMargin" >
+     <number>0</number>
+    </property>
+    <property name="rightMargin" >
+     <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QToolButton" name="zoomInButton" >
+      <property name="toolTip" >
+       <string>Zoom In</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QToolButton" name="zoomOutButton" >
+      <property name="toolTip" >
+       <string>Zoom Out</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <spacer>
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="sizeHint" >
+       <size>
+        <width>0</width>
+        <height>20</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QToolButton" name="detailsButton" >
+   <property name="geometry" >
+    <rect>
+     <x>176</x>
+     <y>40</y>
+     <width>25</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+    <sizepolicy vsizetype="Ignored" hsizetype="Fixed" >
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="toolTip" >
+    <string>Toggle details extension</string>
+   </property>
+   <property name="text" >
+    <string>></string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="linearButton" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Linear Type</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="radialButton" >
+   <property name="geometry" >
+    <rect>
+     <x>40</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Radial Type</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="conicalButton" >
+   <property name="geometry" >
+    <rect>
+     <x>70</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Conical Type</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="padButton" >
+   <property name="geometry" >
+    <rect>
+     <x>110</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Pad Spread</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="repeatButton" >
+   <property name="geometry" >
+    <rect>
+     <x>140</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Repeat Spread</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QToolButton" name="reflectButton" >
+   <property name="geometry" >
+    <rect>
+     <x>170</x>
+     <y>10</y>
+     <width>30</width>
+     <height>26</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Reflect Spread</string>
+   </property>
+   <property name="text" >
+    <string>...</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="autoRaise" >
+    <bool>true</bool>
+   </property>
+  </widget>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QtColorButton</class>
+   <extends>QToolButton</extends>
+   <header>qtcolorbutton.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QtColorLine</class>
+   <extends>QWidget</extends>
+   <header>qtcolorline.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>QtGradientStopsWidget</class>
+   <extends>QWidget</extends>
+   <header>qtgradientstopswidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>QtGradientWidget</class>
+   <extends>QWidget</extends>
+   <header>qtgradientwidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>typeComboBox</tabstop>
+  <tabstop>spreadComboBox</tabstop>
+  <tabstop>detailsButton</tabstop>
+  <tabstop>spinBox1</tabstop>
+  <tabstop>spinBox2</tabstop>
+  <tabstop>spinBox3</tabstop>
+  <tabstop>spinBox4</tabstop>
+  <tabstop>spinBox5</tabstop>
+  <tabstop>zoomSpinBox</tabstop>
+  <tabstop>zoomInButton</tabstop>
+  <tabstop>zoomOutButton</tabstop>
+  <tabstop>zoomAllButton</tabstop>
+  <tabstop>colorButton</tabstop>
+  <tabstop>hsvRadioButton</tabstop>
+  <tabstop>rgbRadioButton</tabstop>
+  <tabstop>positionSpinBox</tabstop>
+  <tabstop>hueSpinBox</tabstop>
+  <tabstop>saturationSpinBox</tabstop>
+  <tabstop>valueSpinBox</tabstop>
+  <tabstop>alphaSpinBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qtgradientview.ui b/tests/auto/uiloader/baseline/qtgradientview.ui
new file mode 100644
index 0000000000000000000000000000000000000000..af7267ea2b0be7220a95caa6fdd3b450ff3555ea
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qtgradientview.ui
@@ -0,0 +1,135 @@
+<ui version="4.0" >
+ <class>QtGradientView</class>
+ <widget class="QWidget" name="QtGradientView" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>484</width>
+    <height>228</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Gradient View</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="leftMargin" >
+    <number>0</number>
+   </property>
+   <property name="topMargin" >
+    <number>0</number>
+   </property>
+   <property name="rightMargin" >
+    <number>0</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QToolButton" name="newButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>New...</string>
+       </property>
+       <property name="toolButtonStyle" >
+        <enum>Qt::ToolButtonTextBesideIcon</enum>
+       </property>
+       <property name="autoRaise" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="editButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Edit...</string>
+       </property>
+       <property name="toolButtonStyle" >
+        <enum>Qt::ToolButtonTextBesideIcon</enum>
+       </property>
+       <property name="autoRaise" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="renameButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Rename</string>
+       </property>
+       <property name="toolButtonStyle" >
+        <enum>Qt::ToolButtonTextBesideIcon</enum>
+       </property>
+       <property name="autoRaise" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="removeButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text" >
+        <string>Remove</string>
+       </property>
+       <property name="toolButtonStyle" >
+        <enum>Qt::ToolButtonTextBesideIcon</enum>
+       </property>
+       <property name="autoRaise" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>71</width>
+         <height>26</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QListWidget" name="listWidget" />
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>listWidget</tabstop>
+  <tabstop>newButton</tabstop>
+  <tabstop>editButton</tabstop>
+  <tabstop>renameButton</tabstop>
+  <tabstop>removeButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qtgradientviewdialog.ui b/tests/auto/uiloader/baseline/qtgradientviewdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..c84907289b39518244520c9b545ce340307a76df
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qtgradientviewdialog.ui
@@ -0,0 +1,121 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>QtGradientViewDialog</class>
+ <widget class="QDialog" name="QtGradientViewDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>178</width>
+    <height>72</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Select Gradient</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QtGradientView" name="gradientView" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>QtGradientView</class>
+   <extends>QFrame</extends>
+   <header>qtgradientview.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>QtGradientViewDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>72</x>
+     <y>224</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>21</x>
+     <y>243</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>QtGradientViewDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>168</x>
+     <y>233</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>152</x>
+     <y>251</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qtresourceeditordialog.ui b/tests/auto/uiloader/baseline/qtresourceeditordialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..2205da4d5020b515a73c55e6bcb3adb49bce7879
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qtresourceeditordialog.ui
@@ -0,0 +1,180 @@
+<ui version="4.0" >
+ <class>QtResourceEditorDialog</class>
+ <widget class="QDialog" name="QtResourceEditorDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>469</width>
+    <height>317</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <widget class="QSplitter" name="splitter" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QWidget" name="layoutWidget" >
+      <layout class="QGridLayout" >
+       <item row="0" column="0" colspan="4" >
+        <widget class="QListWidget" name="qrcFileList" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Ignored" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QToolButton" name="newQrcButton" >
+         <property name="toolTip" >
+          <string>New File</string>
+         </property>
+         <property name="text" >
+          <string>N</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" >
+        <widget class="QToolButton" name="removeQrcButton" >
+         <property name="toolTip" >
+          <string>Remove File</string>
+         </property>
+         <property name="text" >
+          <string>R</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3" >
+        <spacer>
+         <property name="spacerName" stdset="0" >
+          <string/>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Ignored</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="1" column="1" >
+        <widget class="QToolButton" name="importQrcButton" >
+         <property name="text" >
+          <string>I</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="" >
+      <layout class="QGridLayout" >
+       <item row="0" column="0" colspan="4" >
+        <widget class="QTreeView" name="resourceTreeView" />
+       </item>
+       <item row="1" column="0" >
+        <widget class="QToolButton" name="newResourceButton" >
+         <property name="toolTip" >
+          <string>New Resource</string>
+         </property>
+         <property name="text" >
+          <string>N</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <widget class="QToolButton" name="addResourceButton" >
+         <property name="text" >
+          <string>A</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" >
+        <widget class="QToolButton" name="removeResourceButton" >
+         <property name="toolTip" >
+          <string>Remove Resource or File</string>
+         </property>
+         <property name="text" >
+          <string>R</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3" >
+        <spacer name="horizontalSpacer" >
+         <property name="spacerName" stdset="0" >
+          <string>horizontalSpacer</string>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>QtResourceEditorDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>QtResourceEditorDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/qttoolbardialog.ui b/tests/auto/uiloader/baseline/qttoolbardialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..c4ad934f80eb977a0f903ee4ac4f11050bc075bf
--- /dev/null
+++ b/tests/auto/uiloader/baseline/qttoolbardialog.ui
@@ -0,0 +1,207 @@
+<ui version="4.0" >
+ <class>QtToolBarDialog</class>
+ <widget class="QDialog" name="QtToolBarDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>583</width>
+    <height>508</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Customize Toolbars</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>8</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item rowspan="3" row="1" column="0" >
+    <widget class="QTreeWidget" name="actionTree" >
+     <column>
+      <property name="text" >
+       <string>1</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Actions</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>Toolbars</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="newButton" >
+       <property name="toolTip" >
+        <string>Add new toolbar</string>
+       </property>
+       <property name="text" >
+        <string>New</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="removeButton" >
+       <property name="toolTip" >
+        <string>Remove selected toolbar</string>
+       </property>
+       <property name="text" >
+        <string>Remove</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="renameButton" >
+       <property name="toolTip" >
+        <string>Rename toolbar</string>
+       </property>
+       <property name="text" >
+        <string>Rename</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="1" >
+    <layout class="QVBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QToolButton" name="upButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip" >
+        <string>Move action up</string>
+       </property>
+       <property name="text" >
+        <string>Up</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="leftButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip" >
+        <string>Remove action from toolbar</string>
+       </property>
+       <property name="text" >
+        <string>&lt;-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="rightButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip" >
+        <string>Add action to toolbar</string>
+       </property>
+       <property name="text" >
+        <string>-></string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="downButton" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip" >
+        <string>Move action down</string>
+       </property>
+       <property name="text" >
+        <string>Down</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>29</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="2" >
+    <widget class="QListWidget" name="currentToolBarList" />
+   </item>
+   <item row="2" column="1" colspan="2" >
+    <widget class="QLabel" name="label_3" >
+     <property name="text" >
+      <string>Current Toolbar Actions</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" colspan="2" >
+    <widget class="QListWidget" name="toolBarList" />
+   </item>
+   <item row="5" column="0" colspan="3" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>newButton</tabstop>
+  <tabstop>removeButton</tabstop>
+  <tabstop>renameButton</tabstop>
+  <tabstop>toolBarList</tabstop>
+  <tabstop>upButton</tabstop>
+  <tabstop>leftButton</tabstop>
+  <tabstop>rightButton</tabstop>
+  <tabstop>downButton</tabstop>
+  <tabstop>currentToolBarList</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/querywidget.ui b/tests/auto/uiloader/baseline/querywidget.ui
new file mode 100644
index 0000000000000000000000000000000000000000..53fa62227b68bb81d5dc5819e01f1ab4a5b2176a
--- /dev/null
+++ b/tests/auto/uiloader/baseline/querywidget.ui
@@ -0,0 +1,163 @@
+<ui version="4.0" >
+ <class>QueryWidget</class>
+ <widget class="QMainWindow" name="QueryWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>545</width>
+    <height>531</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Recipes XQuery Example</string>
+  </property>
+  <widget class="QWidget" name="centralwidget" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>29</y>
+     <width>545</width>
+     <height>480</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout" >
+    <item>
+     <layout class="QVBoxLayout" >
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QGroupBox" name="inputGroupBox" >
+        <property name="minimumSize" >
+         <size>
+          <width>550</width>
+          <height>120</height>
+         </size>
+        </property>
+        <property name="title" >
+         <string>Input Document</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_4" >
+         <item>
+          <layout class="QVBoxLayout" name="_2" >
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <property name="margin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QTextEdit" name="inputTextEdit" />
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="queryGroupBox" >
+        <property name="minimumSize" >
+         <size>
+          <width>550</width>
+          <height>120</height>
+         </size>
+        </property>
+        <property name="title" >
+         <string>Select your query:</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_5" >
+         <item>
+          <widget class="QComboBox" name="defaultQueries" />
+         </item>
+         <item>
+          <widget class="QTextEdit" name="queryTextEdit" >
+           <property name="minimumSize" >
+            <size>
+             <width>400</width>
+             <height>60</height>
+            </size>
+           </property>
+           <property name="readOnly" >
+            <bool>true</bool>
+           </property>
+           <property name="acceptRichText" >
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="outputGroupBox" >
+        <property name="minimumSize" >
+         <size>
+          <width>550</width>
+          <height>120</height>
+         </size>
+        </property>
+        <property name="title" >
+         <string>Output Document</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_6" >
+         <item>
+          <layout class="QVBoxLayout" name="_3" >
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <property name="margin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QTextEdit" name="outputTextEdit" >
+             <property name="minimumSize" >
+              <size>
+               <width>500</width>
+               <height>80</height>
+              </size>
+             </property>
+             <property name="readOnly" >
+              <bool>true</bool>
+             </property>
+             <property name="acceptRichText" >
+              <bool>false</bool>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>545</width>
+     <height>29</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QStatusBar" name="statusbar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>509</y>
+     <width>545</width>
+     <height>22</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/remotecontrol.ui b/tests/auto/uiloader/baseline/remotecontrol.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1cfc7f54007dd0d097e16fc63ebfa16e70a54089
--- /dev/null
+++ b/tests/auto/uiloader/baseline/remotecontrol.ui
@@ -0,0 +1,228 @@
+<ui version="4.0" >
+ <class>RemoteControlClass</class>
+ <widget class="QMainWindow" name="RemoteControlClass" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>344</width>
+    <height>364</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>RemoteControl</string>
+  </property>
+  <widget class="QWidget" name="centralWidget" >
+   <layout class="QGridLayout" >
+    <item row="0" column="0" >
+     <widget class="QLabel" name="label" >
+      <property name="text" >
+       <string>Start URL:</string>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="1" colspan="2" >
+     <widget class="QLineEdit" name="startUrlLineEdit" />
+    </item>
+    <item row="1" column="1" >
+     <widget class="QPushButton" name="launchButton" >
+      <property name="text" >
+       <string>Launch Qt HelpViewer</string>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="2" >
+     <spacer>
+      <property name="orientation" >
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="sizeHint" >
+       <size>
+        <width>101</width>
+        <height>20</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+    <item row="2" column="1" >
+     <spacer>
+      <property name="orientation" >
+       <enum>Qt::Vertical</enum>
+      </property>
+      <property name="sizeType" >
+       <enum>QSizePolicy::Fixed</enum>
+      </property>
+      <property name="sizeHint" >
+       <size>
+        <width>113</width>
+        <height>16</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+    <item row="3" column="0" colspan="3" >
+     <widget class="QGroupBox" name="actionGroupBox" >
+      <property name="enabled" >
+       <bool>false</bool>
+      </property>
+      <property name="title" >
+       <string>Actions</string>
+      </property>
+      <layout class="QGridLayout" >
+       <item row="0" column="0" >
+        <widget class="QLabel" name="label_2" >
+         <property name="text" >
+          <string>Search in Index:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" colspan="2" >
+        <layout class="QHBoxLayout" >
+         <property name="spacing" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QLineEdit" name="indexLineEdit" />
+         </item>
+         <item>
+          <widget class="QToolButton" name="indexButton" >
+           <property name="text" >
+            <string/>
+           </property>
+           <property name="icon" >
+            <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QLabel" name="label_4" >
+         <property name="text" >
+          <string>Identifier:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" colspan="2" >
+        <layout class="QHBoxLayout" >
+         <property name="spacing" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QLineEdit" name="identifierLineEdit" />
+         </item>
+         <item>
+          <widget class="QToolButton" name="identifierButton" >
+           <property name="text" >
+            <string/>
+           </property>
+           <property name="icon" >
+            <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="2" column="0" >
+        <widget class="QLabel" name="label_3" >
+         <property name="text" >
+          <string>Show URL:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="2" >
+        <layout class="QHBoxLayout" >
+         <property name="spacing" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QLineEdit" name="urlLineEdit" />
+         </item>
+         <item>
+          <widget class="QToolButton" name="urlButton" >
+           <property name="text" >
+            <string/>
+           </property>
+           <property name="icon" >
+            <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="3" column="1" >
+        <widget class="QPushButton" name="syncContentsButton" >
+         <property name="text" >
+          <string>Sync Contents</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="2" >
+        <spacer>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" >
+          <size>
+           <width>81</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="4" column="0" colspan="3" >
+        <widget class="QCheckBox" name="contentsCheckBox" >
+         <property name="text" >
+          <string>Show Contents</string>
+         </property>
+        </widget>
+       </item>
+       <item row="5" column="0" >
+        <widget class="QCheckBox" name="indexCheckBox" >
+         <property name="text" >
+          <string>Show Index</string>
+         </property>
+        </widget>
+       </item>
+       <item row="6" column="0" colspan="3" >
+        <widget class="QCheckBox" name="bookmarksCheckBox" >
+         <property name="text" >
+          <string>Show Bookmarks</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>344</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile" >
+    <property name="title" >
+     <string>File</string>
+    </property>
+    <addaction name="actionQuit" />
+   </widget>
+   <addaction name="menuFile" />
+  </widget>
+  <widget class="QStatusBar" name="statusBar" />
+  <action name="actionQuit" >
+   <property name="text" >
+    <string>Quit</string>
+   </property>
+  </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <resources>
+  <include location="remotecontrol.qrc" />
+ </resources>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/saveformastemplate.ui b/tests/auto/uiloader/baseline/saveformastemplate.ui
new file mode 100644
index 0000000000000000000000000000000000000000..81d55d3b63d5720f8c5b7a86b2cf82cf08c48346
--- /dev/null
+++ b/tests/auto/uiloader/baseline/saveformastemplate.ui
@@ -0,0 +1,166 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>SaveFormAsTemplate</class>
+ <widget class="QDialog" name="SaveFormAsTemplate" >
+  <property name="windowTitle" >
+   <string>Save Form As Template</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <layout class="QFormLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>&amp;Name:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+       <property name="buddy" >
+        <cstring>templateNameEdit</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="templateNameEdit" >
+       <property name="minimumSize" >
+        <size>
+         <width>222</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string/>
+       </property>
+       <property name="echoMode" >
+        <enum>QLineEdit::Normal</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>&amp;Category:</string>
+       </property>
+       <property name="textFormat" >
+        <enum>Qt::AutoText</enum>
+       </property>
+       <property name="buddy" >
+        <cstring>categoryCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QComboBox" name="categoryCombo" />
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QFrame" name="horizontalLine" >
+     <property name="frameShape" >
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Sunken</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>SaveFormAsTemplate</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>256</x>
+     <y>124</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>113</x>
+     <y>143</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>SaveFormAsTemplate</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>332</x>
+     <y>127</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>372</x>
+     <y>147</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/settings.ui b/tests/auto/uiloader/baseline/settings.ui
new file mode 100644
index 0000000000000000000000000000000000000000..fcf698ba85a5a611fd5d25b251f0afc11f361641
--- /dev/null
+++ b/tests/auto/uiloader/baseline/settings.ui
@@ -0,0 +1,262 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>392</width>
+    <height>176</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" >
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QLabel" name="label" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize" >
+        <size>
+         <width>90</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string>Audio device:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="deviceCombo" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QLabel" name="label_6" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize" >
+        <size>
+         <width>90</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string>Audio effect:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="audioEffectsCombo" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QLabel" name="crossFadeLabel" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize" >
+        <size>
+         <width>90</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="text" >
+        <string>Cross fade:</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" >
+       <item>
+        <widget class="QSlider" name="crossFadeSlider" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimum" >
+          <number>-20</number>
+         </property>
+         <property name="maximum" >
+          <number>20</number>
+         </property>
+         <property name="singleStep" >
+          <number>1</number>
+         </property>
+         <property name="pageStep" >
+          <number>2</number>
+         </property>
+         <property name="value" >
+          <number>0</number>
+         </property>
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="tickPosition" >
+          <enum>QSlider::TicksBelow</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+         <item>
+          <widget class="QLabel" name="label_3" >
+           <property name="font" >
+            <font>
+             <pointsize>9</pointsize>
+            </font>
+           </property>
+           <property name="text" >
+            <string>-10 Sec</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0" >
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_5" >
+           <property name="font" >
+            <font>
+             <pointsize>9</pointsize>
+            </font>
+           </property>
+           <property name="text" >
+            <string>0</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer>
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0" >
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_4" >
+           <property name="font" >
+            <font>
+             <pointsize>9</pointsize>
+            </font>
+           </property>
+           <property name="text" >
+            <string>10 Sec</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/signalslotdialog.ui b/tests/auto/uiloader/baseline/signalslotdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1a8a8d92192ff99f5f8f4caf1666a5ca15ac933a
--- /dev/null
+++ b/tests/auto/uiloader/baseline/signalslotdialog.ui
@@ -0,0 +1,129 @@
+<ui version="4.0" >
+ <class>SignalSlotDialogClass</class>
+ <widget class="QDialog" name="SignalSlotDialogClass" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>617</width>
+    <height>535</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Signals and slots</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QGroupBox" name="slotGroupBox" >
+     <property name="title" >
+      <string>Slots</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <item>
+       <widget class="QListView" name="slotListView" />
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QToolButton" name="addSlotButton" >
+          <property name="toolTip" >
+           <string>Add</string>
+          </property>
+          <property name="text" >
+           <string>...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="removeSlotButton" >
+          <property name="toolTip" >
+           <string>Delete</string>
+          </property>
+          <property name="text" >
+           <string>...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="signalGroupBox" >
+     <property name="title" >
+      <string>Signals</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <item>
+       <widget class="QListView" name="signalListView" />
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QToolButton" name="addSignalButton" >
+          <property name="toolTip" >
+           <string>Add</string>
+          </property>
+          <property name="text" >
+           <string>...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="removeSignalButton" >
+          <property name="toolTip" >
+           <string>Delete</string>
+          </property>
+          <property name="text" >
+           <string>...</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="spacerName" stdset="0" >
+           <string/>
+          </property>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/sslclient.ui b/tests/auto/uiloader/baseline/sslclient.ui
new file mode 100644
index 0000000000000000000000000000000000000000..5a24751168fde0c996358da069c8e6b80b4f8e7d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/sslclient.ui
@@ -0,0 +1,190 @@
+<ui version="4.0" >
+ <class>Form</class>
+ <widget class="QWidget" name="Form" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>343</width>
+    <height>320</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Secure Socket Client</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <layout class="QGridLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="hostNameLabel" >
+       <property name="text" >
+        <string>Host name:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="hostNameEdit" >
+       <property name="text" >
+        <string>imap.example.com</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="portLabel" >
+       <property name="text" >
+        <string>Port:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1" >
+      <widget class="QSpinBox" name="portBox" >
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+       <property name="maximum" >
+        <number>65535</number>
+       </property>
+       <property name="value" >
+        <number>993</number>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QPushButton" name="connectButton" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="text" >
+      <string>Connect to host</string>
+     </property>
+     <property name="default" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="sessionBox" >
+     <property name="enabled" >
+      <bool>false</bool>
+     </property>
+     <property name="title" >
+      <string>Active session</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QLabel" name="cipherText" >
+          <property name="text" >
+           <string>Cryptographic Cipher:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="cipherLabel" >
+          <property name="text" >
+           <string>&lt;none></string>
+          </property>
+          <property name="alignment" >
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <widget class="QTextEdit" name="sessionOutput" >
+        <property name="enabled" >
+         <bool>false</bool>
+        </property>
+        <property name="focusPolicy" >
+         <enum>Qt::NoFocus</enum>
+        </property>
+        <property name="readOnly" >
+         <bool>true</bool>
+        </property>
+        <property name="html" >
+         <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>&lt;/body>&lt;/html></string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QLabel" name="sessionInputLabel" >
+          <property name="text" >
+           <string>Input:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="sessionInput" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="sendButton" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+          <property name="focusPolicy" >
+           <enum>Qt::TabFocus</enum>
+          </property>
+          <property name="text" >
+           <string>&amp;Send</string>
+          </property>
+          <property name="default" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>hostNameEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>connectButton</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>126</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>142</x>
+     <y>78</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>sessionInput</sender>
+   <signal>returnPressed()</signal>
+   <receiver>sendButton</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>142</x>
+     <y>241</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>297</x>
+     <y>234</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/sslerrors.ui b/tests/auto/uiloader/baseline/sslerrors.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4aac18cddbd060963e46d95e517b860bc2c8ed19
--- /dev/null
+++ b/tests/auto/uiloader/baseline/sslerrors.ui
@@ -0,0 +1,110 @@
+<ui version="4.0" >
+ <class>SslErrors</class>
+ <widget class="QDialog" name="SslErrors" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>371</width>
+    <height>216</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Unable To Validate The Connection</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600; color:#ff0000;">Warning&lt;/span>&lt;span style=" color:#ff0000;">:&lt;/span>&lt;span style=" color:#000000;"> One or more errors with this connection prevent validating the authenticity of the host you are connecting to. Please review the following list of errors, and click &lt;/span>&lt;span style=" color:#000000;">Ignore&lt;/span>&lt;span style=" color:#000000;"> to continue, or &lt;/span>&lt;span style=" color:#000000;">Cancel&lt;/span>&lt;span style=" color:#000000;"> to abort the connection.&lt;/span>&lt;/p>&lt;/body>&lt;/html></string>
+     </property>
+     <property name="wordWrap" >
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QListWidget" name="sslErrorList" />
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <item>
+      <widget class="QPushButton" name="certificateChainButton" >
+       <property name="text" >
+        <string>View Certificate Chain</string>
+       </property>
+       <property name="autoDefault" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushButton" >
+       <property name="text" >
+        <string>Ignore</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushButton_2" >
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>pushButton</sender>
+   <signal>clicked()</signal>
+   <receiver>SslErrors</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>235</x>
+     <y>185</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>228</x>
+     <y>287</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>pushButton_2</sender>
+   <signal>clicked()</signal>
+   <receiver>SslErrors</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>325</x>
+     <y>192</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>333</x>
+     <y>231</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/statistics.ui b/tests/auto/uiloader/baseline/statistics.ui
new file mode 100644
index 0000000000000000000000000000000000000000..ba752e386a504c03c150e76ed5c72df08465f74b
--- /dev/null
+++ b/tests/auto/uiloader/baseline/statistics.ui
@@ -0,0 +1,242 @@
+<ui version="4.0" stdsetdef="1" >
+  <class>Statistics</class>
+  <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+  <widget class="QDialog" name="Statistics" >
+    <property name="objectName" >
+      <string notr="true" >linguist_stats</string>
+    </property>
+    <property name="geometry" >
+      <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>336</width>
+        <height>164</height>
+      </rect>
+    </property>
+    <property name="windowTitle" >
+      <string>Statistics</string>
+    </property>
+    <layout class="QGridLayout" >
+      <property name="objectName" >
+        <string notr="true" >unnamed</string>
+      </property>
+      <item row="1" column="0" >
+        <layout class="QHBoxLayout" >
+          <property name="objectName" >
+            <string notr="true" >unnamed</string>
+          </property>
+          <item>
+            <spacer name="spacer4_2" >
+              <property name="sizeHint" >
+                <size>
+                  <width>40</width>
+                  <height>20</height>
+                </size>
+              </property>
+              <property name="sizeType" >
+                <enum>Expanding</enum>
+              </property>
+              <property name="orientation" >
+                <enum>Horizontal</enum>
+              </property>
+            </spacer>
+          </item>
+          <item>
+            <widget class="QPushButton" name="closeBtn" >
+              <property name="objectName" >
+                <string notr="true" >closeBtn</string>
+              </property>
+              <property name="text" >
+                <string>&amp;Close</string>
+              </property>
+            </widget>
+          </item>
+          <item>
+            <spacer name="spacer4" >
+              <property name="sizeHint" >
+                <size>
+                  <width>40</width>
+                  <height>20</height>
+                </size>
+              </property>
+              <property name="sizeType" >
+                <enum>Expanding</enum>
+              </property>
+              <property name="orientation" >
+                <enum>Horizontal</enum>
+              </property>
+            </spacer>
+          </item>
+        </layout>
+      </item>
+      <item row="0" column="0" >
+        <widget class="QFrame" name="frame4" >
+          <property name="objectName" >
+            <string notr="true" >frame4</string>
+          </property>
+          <property name="frameShape" >
+            <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow" >
+            <enum>QFrame::Raised</enum>
+          </property>
+          <layout class="QGridLayout" >
+            <property name="objectName" >
+              <string notr="true" >unnamed</string>
+            </property>
+            <item row="0" column="2" >
+              <widget class="QLabel" name="textLabel4" >
+                <property name="objectName" >
+                  <string notr="true" >textLabel4</string>
+                </property>
+                <property name="text" >
+                  <string>Translation</string>
+                </property>
+              </widget>
+            </item>
+            <item row="0" column="1" >
+              <widget class="QLabel" name="textLabel5" >
+                <property name="objectName" >
+                  <string notr="true" >textLabel5</string>
+                </property>
+                <property name="text" >
+                  <string>Source</string>
+                </property>
+              </widget>
+            </item>
+            <item row="1" column="1" >
+              <widget class="QLabel" name="untrWords" >
+                <property name="objectName" >
+                  <string notr="true" >untrWords</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+            <item row="1" column="2" >
+              <widget class="QLabel" name="trWords" >
+                <property name="objectName" >
+                  <string notr="true" >trWords</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+            <item row="1" column="0" >
+              <widget class="QLabel" name="textLabel1" >
+                <property name="objectName" >
+                  <string notr="true" >textLabel1</string>
+                </property>
+                <property name="text" >
+                  <string>Words:</string>
+                </property>
+              </widget>
+            </item>
+            <item row="2" column="2" >
+              <widget class="QLabel" name="trChars" >
+                <property name="objectName" >
+                  <string notr="true" >trChars</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+            <item row="2" column="1" >
+              <widget class="QLabel" name="untrChars" >
+                <property name="objectName" >
+                  <string notr="true" >untrChars</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+            <item row="2" column="0" >
+              <widget class="QLabel" name="textLabel3" >
+                <property name="objectName" >
+                  <string notr="true" >textLabel3</string>
+                </property>
+                <property name="text" >
+                  <string>Characters:</string>
+                </property>
+              </widget>
+            </item>
+            <item row="3" column="0" >
+              <widget class="QLabel" name="textLabel6" >
+                <property name="objectName" >
+                  <string notr="true" >textLabel6</string>
+                </property>
+                <property name="text" >
+                  <string>Characters (with spaces):</string>
+                </property>
+              </widget>
+            </item>
+            <item row="3" column="2" >
+              <widget class="QLabel" name="trCharsSpc" >
+                <property name="objectName" >
+                  <string notr="true" >trCharsSpc</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+            <item row="3" column="1" >
+              <widget class="QLabel" name="untrCharsSpc" >
+                <property name="objectName" >
+                  <string notr="true" >untrCharsSpc</string>
+                </property>
+                <property name="text" >
+                  <string>0</string>
+                </property>
+              </widget>
+            </item>
+          </layout>
+        </widget>
+      </item>
+    </layout>
+  </widget>
+  <layoutdefault spacing="6" margin="11" />
+</ui>
diff --git a/tests/auto/uiloader/baseline/stringlisteditor.ui b/tests/auto/uiloader/baseline/stringlisteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..96fff1c3eaf51918292d96a79b337a9ed85f5151
--- /dev/null
+++ b/tests/auto/uiloader/baseline/stringlisteditor.ui
@@ -0,0 +1,265 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::Dialog</class>
+ <widget class="QDialog" name="qdesigner_internal::Dialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>StringList</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="1" column="0" colspan="2" >
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <layout class="QHBoxLayout" >
+          <property name="margin" >
+           <number>0</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item>
+           <widget class="QToolButton" name="newButton" >
+            <property name="toolTip" >
+             <string>New String</string>
+            </property>
+            <property name="text" >
+             <string>&amp;New</string>
+            </property>
+            <property name="toolButtonStyle" >
+             <enum>Qt::ToolButtonTextBesideIcon</enum>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QToolButton" name="deleteButton" >
+            <property name="toolTip" >
+             <string>Delete String</string>
+            </property>
+            <property name="text" >
+             <string>&amp;Delete</string>
+            </property>
+            <property name="toolButtonStyle" >
+             <enum>Qt::ToolButtonTextBesideIcon</enum>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer>
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" >
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" >
+          <property name="margin" >
+           <number>0</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item>
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>&amp;Value:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>valueEdit</cstring>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="valueEdit" />
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="1" >
+       <layout class="QVBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QToolButton" name="upButton" >
+          <property name="toolTip" >
+           <string>Move String Up</string>
+          </property>
+          <property name="text" >
+           <string>Up</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="downButton" >
+          <property name="toolTip" >
+           <string>Move String Down</string>
+          </property>
+          <property name="text" >
+           <string>Down</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QListView" name="listView" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>258</x>
+     <y>283</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>138</x>
+     <y>294</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>350</x>
+     <y>284</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>369</x>
+     <y>295</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/stylesheeteditor.ui b/tests/auto/uiloader/baseline/stylesheeteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..34cd7f6d041a161443a46f26812b33ad9e035143
--- /dev/null
+++ b/tests/auto/uiloader/baseline/stylesheeteditor.ui
@@ -0,0 +1,171 @@
+<ui version="4.0" >
+ <class>StyleSheetEditor</class>
+ <widget class="QWidget" name="StyleSheetEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>445</width>
+    <height>289</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Style Editor</string>
+  </property>
+  <layout class="QGridLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item row="0" column="6" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::MinimumExpanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>32</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="0" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::MinimumExpanding</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>32</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="5" >
+    <widget class="QComboBox" name="styleSheetCombo" >
+     <item>
+      <property name="text" >
+       <string>Default</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Coffee</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Pagefold</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="0" column="3" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>10</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="2" >
+    <widget class="QComboBox" name="styleCombo" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>0</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QLabel" name="label_7" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>0</hsizetype>
+       <vsizetype>5</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Style:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="7" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>321</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="applyButton" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="text" >
+        <string>&amp;Apply</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" colspan="7" >
+    <widget class="QTextEdit" name="styleTextEdit" />
+   </item>
+   <item row="0" column="4" >
+    <widget class="QLabel" name="label_8" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>0</hsizetype>
+       <vsizetype>5</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Style Sheet:</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/tabbedbrowser.ui b/tests/auto/uiloader/baseline/tabbedbrowser.ui
new file mode 100644
index 0000000000000000000000000000000000000000..6bb608f79f390eca314a64c4e52529ea9c79e15e
--- /dev/null
+++ b/tests/auto/uiloader/baseline/tabbedbrowser.ui
@@ -0,0 +1,233 @@
+<ui version="4.0" >
+ <author></author>
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>TabbedBrowser</class>
+ <widget class="QWidget" name="TabbedBrowser" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>710</width>
+    <height>664</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>TabbedBrowser</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
+   <property name="spacing" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QTabWidget" name="tab" >
+     <widget class="QWidget" name="frontpage" >
+      <attribute name="title" >
+       <string>Untitled</string>
+      </attribute>
+      <layout class="QGridLayout" >
+       <property name="margin" >
+        <number>8</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QFrame" name="frameFind" >
+     <property name="frameShape" >
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Raised</enum>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolClose" >
+        <property name="text" >
+         <string/>
+        </property>
+        <property name="icon" >
+         <iconset resource="assistant.qrc" >:/trolltech/assistant/images/close.png</iconset>
+        </property>
+        <property name="autoRaise" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="editFind" >
+        <property name="sizePolicy" >
+         <sizepolicy>
+          <hsizetype>0</hsizetype>
+          <vsizetype>0</vsizetype>
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize" >
+         <size>
+          <width>150</width>
+          <height>0</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolPrevious" >
+        <property name="text" >
+         <string>Previous</string>
+        </property>
+        <property name="icon" >
+         <iconset resource="assistant.qrc" >:/trolltech/assistant/images/win/previous.png</iconset>
+        </property>
+        <property name="toolButtonStyle" >
+         <enum>Qt::ToolButtonTextBesideIcon</enum>
+        </property>
+        <property name="autoRaise" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolNext" >
+        <property name="minimumSize" >
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="text" >
+         <string>Next</string>
+        </property>
+        <property name="icon" >
+         <iconset resource="assistant.qrc" >:/trolltech/assistant/images/win/next.png</iconset>
+        </property>
+        <property name="toolButtonStyle" >
+         <enum>Qt::ToolButtonTextBesideIcon</enum>
+        </property>
+        <property name="autoRaise" >
+         <bool>true</bool>
+        </property>
+        <property name="arrowType" >
+         <enum>Qt::NoArrow</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkCase" >
+        <property name="text" >
+         <string>Case Sensitive</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="checkWholeWords" >
+        <property name="text" >
+         <string>Whole words</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="labelWrapped" >
+        <property name="minimumSize" >
+         <size>
+          <width>0</width>
+          <height>20</height>
+         </size>
+        </property>
+        <property name="maximumSize" >
+         <size>
+          <width>105</width>
+          <height>20</height>
+         </size>
+        </property>
+        <property name="text" >
+         <string>&lt;img src=":/trolltech/assistant/images/wrap.png">&amp;nbsp;Search wrapped</string>
+        </property>
+        <property name="textFormat" >
+         <enum>Qt::RichText</enum>
+        </property>
+        <property name="scaledContents" >
+         <bool>true</bool>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>81</width>
+          <height>21</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources>
+  <include location="assistant.qrc" />
+ </resources>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/tablewidgeteditor.ui b/tests/auto/uiloader/baseline/tablewidgeteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..ebd15a2f803f13c9d238378a27845ee4313ae0c5
--- /dev/null
+++ b/tests/auto/uiloader/baseline/tablewidgeteditor.ui
@@ -0,0 +1,403 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::TableWidgetEditor</class>
+ <widget class="QDialog" name="qdesigner_internal::TableWidgetEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>591</width>
+    <height>455</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit Table Widget</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_4" >
+   <item row="0" column="0" >
+    <widget class="QGroupBox" name="itemsBox" >
+     <property name="title" >
+      <string>Table Items</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="QTableWidget" name="tableWidget" >
+        <property name="toolTip" >
+         <string>Table Items</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout_5" >
+        <item>
+         <widget class="QLabel" name="label_3" >
+          <property name="text" >
+           <string>Icon</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" />
+        </item>
+        <item>
+         <spacer name="horizontalSpacer" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QWidget" native="1" name="widget" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout" >
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QGroupBox" name="columnsBox" >
+        <property name="title" >
+         <string>Columns</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_2" >
+         <item row="0" column="0" >
+          <widget class="QListWidget" name="columnsListWidget" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Expanding" hsizetype="Ignored" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="focusPolicy" >
+            <enum>Qt::TabFocus</enum>
+           </property>
+           <property name="toolTip" >
+            <string>Table Columns</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0" >
+          <layout class="QHBoxLayout" name="horizontalLayout_3" >
+           <item>
+            <widget class="QToolButton" name="newColumnButton" >
+             <property name="toolTip" >
+              <string>New Column</string>
+             </property>
+             <property name="text" >
+              <string>New</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="deleteColumnButton" >
+             <property name="toolTip" >
+              <string>Delete Column</string>
+             </property>
+             <property name="text" >
+              <string>Delete</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>0</width>
+               <height>23</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QToolButton" name="moveColumnUpButton" >
+             <property name="toolTip" >
+              <string>Move Column Up</string>
+             </property>
+             <property name="text" >
+              <string>U</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="moveColumnDownButton" >
+             <property name="toolTip" >
+              <string>Move Column Down</string>
+             </property>
+             <property name="text" >
+              <string>D</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item row="2" column="0" >
+          <layout class="QHBoxLayout" name="horizontalLayout_2" >
+           <item>
+            <widget class="QLabel" name="label" >
+             <property name="text" >
+              <string>Icon</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="qdesigner_internal::IconSelector" native="1" name="columnIconSelector" />
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>0</width>
+               <height>21</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="rowsBox" >
+        <property name="title" >
+         <string>Rows</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_3" >
+         <item row="0" column="0" >
+          <widget class="QListWidget" name="rowsListWidget" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Expanding" hsizetype="Ignored" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="focusPolicy" >
+            <enum>Qt::TabFocus</enum>
+           </property>
+           <property name="toolTip" >
+            <string>Table Rows</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0" >
+          <layout class="QHBoxLayout" name="horizontalLayout_4" >
+           <item>
+            <widget class="QToolButton" name="newRowButton" >
+             <property name="toolTip" >
+              <string>New Row</string>
+             </property>
+             <property name="text" >
+              <string>New</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="deleteRowButton" >
+             <property name="toolTip" >
+              <string>Delete Row</string>
+             </property>
+             <property name="text" >
+              <string>Delete</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>0</width>
+               <height>23</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QToolButton" name="moveRowUpButton" >
+             <property name="toolTip" >
+              <string>Move Row Up</string>
+             </property>
+             <property name="text" >
+              <string>U</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="moveRowDownButton" >
+             <property name="toolTip" >
+              <string>Move Row Down</string>
+             </property>
+             <property name="text" >
+              <string>D</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item row="2" column="0" >
+          <layout class="QHBoxLayout" name="horizontalLayout" >
+           <item>
+            <widget class="QLabel" name="label_2" >
+             <property name="text" >
+              <string>Icon</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="qdesigner_internal::IconSelector" native="1" name="rowIconSelector" />
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0" >
+              <size>
+               <width>0</width>
+               <height>21</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+  <zorder>itemsBox</zorder>
+  <zorder>buttonBox</zorder>
+  <zorder>widget</zorder>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::IconSelector</class>
+   <extends>QWidget</extends>
+   <header>iconselector_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>tableWidget</tabstop>
+  <tabstop>columnsListWidget</tabstop>
+  <tabstop>newColumnButton</tabstop>
+  <tabstop>deleteColumnButton</tabstop>
+  <tabstop>moveColumnUpButton</tabstop>
+  <tabstop>moveColumnDownButton</tabstop>
+  <tabstop>rowsListWidget</tabstop>
+  <tabstop>newRowButton</tabstop>
+  <tabstop>deleteRowButton</tabstop>
+  <tabstop>moveRowUpButton</tabstop>
+  <tabstop>moveRowDownButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::TableWidgetEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>431</x>
+     <y>351</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>373</x>
+     <y>362</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::TableWidgetEditor</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>547</x>
+     <y>354</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>562</x>
+     <y>362</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/tetrixwindow.ui b/tests/auto/uiloader/baseline/tetrixwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..a13f538aa8d69b6c65c08d63fb8263fc0716d044
--- /dev/null
+++ b/tests/auto/uiloader/baseline/tetrixwindow.ui
@@ -0,0 +1,164 @@
+<ui version="4.0" >
+ <class>TetrixWindow</class>
+ <widget class="QWidget" name="TetrixWindow" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>537</width>
+    <height>475</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Tetrix</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item row="4" column="0" >
+      <widget class="QPushButton" name="startButton" >
+       <property name="focusPolicy" >
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text" >
+        <string>&amp;Start</string>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="2" >
+      <widget class="QLCDNumber" name="linesLcd" >
+       <property name="segmentStyle" >
+        <enum>QLCDNumber::Filled</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="2" >
+      <widget class="QLabel" name="linesRemovedLabel" >
+       <property name="text" >
+        <string>LINES REMOVED</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="5" column="2" >
+      <widget class="QPushButton" name="pauseButton" >
+       <property name="focusPolicy" >
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text" >
+        <string>&amp;Pause</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="2" >
+      <widget class="QLCDNumber" name="scoreLcd" >
+       <property name="segmentStyle" >
+        <enum>QLCDNumber::Filled</enum>
+       </property>
+      </widget>
+     </item>
+     <item rowspan="6" row="0" column="1" >
+      <widget class="TetrixBoard" name="board" >
+       <property name="focusPolicy" >
+        <enum>Qt::StrongFocus</enum>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::Panel</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Sunken</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="levelLabel" >
+       <property name="text" >
+        <string>LEVEL</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="nextLabel" >
+       <property name="text" >
+        <string>NEXT</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="0" >
+      <widget class="QLCDNumber" name="levelLcd" >
+       <property name="segmentStyle" >
+        <enum>QLCDNumber::Filled</enum>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="2" >
+      <widget class="QLabel" name="scoreLabel" >
+       <property name="text" >
+        <string>SCORE</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignBottom|Qt::AlignHCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <widget class="QLabel" name="nextPieceLabel" >
+       <property name="frameShape" >
+        <enum>QFrame::Box</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Raised</enum>
+       </property>
+       <property name="text" >
+        <string/>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="2" >
+      <widget class="QPushButton" name="quitButton" >
+       <property name="focusPolicy" >
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text" >
+        <string>&amp;Quit</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>TetrixBoard</class>
+   <extends>QFrame</extends>
+   <header>tetrixboard.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/textfinder.ui b/tests/auto/uiloader/baseline/textfinder.ui
new file mode 100644
index 0000000000000000000000000000000000000000..af05192dbdd699e03f90f385fc546381ad0b1b5b
--- /dev/null
+++ b/tests/auto/uiloader/baseline/textfinder.ui
@@ -0,0 +1,89 @@
+<ui version="4.0" >
+ <class>Form</class>
+ <widget class="QWidget" name="Form" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>378</width>
+    <height>158</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Find Text</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item row="0" column="1" >
+      <widget class="QLineEdit" name="lineEdit" />
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="searchLabel" >
+       <property name="text" >
+        <string>&amp;Keyword:</string>
+       </property>
+       <property name="buddy" >
+        <cstring>lineEdit</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="2" >
+      <widget class="QPushButton" name="findButton" >
+       <property name="text" >
+        <string>&amp;Find</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QTextEdit" name="textEdit" />
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>lineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>findButton</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>261</x>
+     <y>17</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>320</x>
+     <y>17</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/topicchooser.ui b/tests/auto/uiloader/baseline/topicchooser.ui
new file mode 100644
index 0000000000000000000000000000000000000000..d4c90bb4b3bfd699d9dc607e3c465b388e00bedc
--- /dev/null
+++ b/tests/auto/uiloader/baseline/topicchooser.ui
@@ -0,0 +1,116 @@
+<UI version="4.0" stdsetdef="1" >
+ <class>TopicChooser</class> 
+ <widget class="QDialog" name="TopicChooser" >
+  <property name="objectName" >
+   <string notr="true">TopicChooser</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>391</width>
+    <height>223</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Choose Topic</string>
+  </property>
+  <property name="sizeGripEnabled" >
+   <bool>true</bool>
+  </property>  
+  <layout class="QVBoxLayout" >
+   <property name="objectName" >
+    <string notr="true">unnamed</string>
+   </property>
+   <property name="margin" >
+    <number>11</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="label" >
+     <property name="objectName" >
+      <string notr="true">label</string>
+     </property>
+     <property name="text" >
+      <string>&amp;Topics</string>
+     </property>
+     <property name="buddy" stdset="0" >
+      <cstring>listWidget</cstring>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QListWidget" name="listWidget" >
+     <property name="objectName" >
+      <string notr="true">listWidget</string>
+     </property>     
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="Layout16" >
+     <property name="objectName" >
+      <string notr="true">Layout16</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="objectName" >
+       <string notr="true">unnamed</string>
+      </property>
+      <property name="margin" >
+       <number>0</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <spacer name="Horizontal Spacing2" >
+        <property name="sizeHint" >
+         <size>
+          <width>20</width>
+          <height>20</height>
+         </size>
+        </property>
+        <property name="sizeType" >
+         <enum>Expanding</enum>
+        </property>
+        <property name="orientation" >
+         <enum>Horizontal</enum>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QPushButton" name="buttonDisplay" >
+        <property name="objectName" >
+         <string notr="true">buttonDisplay</string>
+        </property>
+        <property name="text" >
+         <string>&amp;Display</string>
+        </property>
+        <property name="autoDefault" >
+         <bool>true</bool>
+        </property>
+        <property name="default" >
+         <bool>true</bool>
+        </property>        
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="buttonCancel" >
+        <property name="objectName" >
+         <string notr="true">buttonCancel</string>
+        </property>
+        <property name="text" >
+         <string>&amp;Close</string>
+        </property>
+        <property name="autoDefault" >
+         <bool>true</bool>
+        </property>        
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+</UI>
diff --git a/tests/auto/uiloader/baseline/translatedialog.ui b/tests/auto/uiloader/baseline/translatedialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..b1cd99cbe7adac8671fba640b30721424423a8a5
--- /dev/null
+++ b/tests/auto/uiloader/baseline/translatedialog.ui
@@ -0,0 +1,301 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>TranslateDialog</class>
+ <widget class="QDialog" name="TranslateDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>407</width>
+    <height>145</height>
+   </rect>
+  </property>
+  <property name="sizePolicy" >
+   <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt Linguist</string>
+  </property>
+  <property name="whatsThis" >
+   <string>This window allows you to search for some text in the translation source file.</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <property name="leftMargin" >
+    <number>9</number>
+   </property>
+   <property name="topMargin" >
+    <number>9</number>
+   </property>
+   <property name="rightMargin" >
+    <number>9</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>9</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QGridLayout" >
+       <property name="leftMargin" >
+        <number>0</number>
+       </property>
+       <property name="topMargin" >
+        <number>0</number>
+       </property>
+       <property name="rightMargin" >
+        <number>0</number>
+       </property>
+       <property name="bottomMargin" >
+        <number>0</number>
+       </property>
+       <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
+       <property name="verticalSpacing" >
+        <number>6</number>
+       </property>
+       <item row="1" column="1" >
+        <widget class="QLineEdit" name="ledTranslateTo" >
+         <property name="whatsThis" >
+          <string>Type in the text to search for.</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" >
+        <widget class="QLabel" name="findWhat" >
+         <property name="text" >
+          <string>Find &amp;source text:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>ledFindWhat</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QLabel" name="translateTo" >
+         <property name="text" >
+          <string>&amp;Translate to:</string>
+         </property>
+         <property name="buddy" >
+          <cstring>ledTranslateTo</cstring>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+        <widget class="QLineEdit" name="ledFindWhat" >
+         <property name="whatsThis" >
+          <string>Type in the text to search for.</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="groupBox" >
+       <property name="title" >
+        <string>Search options</string>
+       </property>
+       <layout class="QVBoxLayout" >
+        <item>
+         <widget class="QCheckBox" name="ckMatchCase" >
+          <property name="whatsThis" >
+           <string>Texts such as 'TeX' and 'tex' are considered as different when checked.</string>
+          </property>
+          <property name="text" >
+           <string>Match &amp;case</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QCheckBox" name="ckMarkFinished" >
+          <property name="text" >
+           <string>Mark new translation as &amp;finished</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QPushButton" name="findNxt" >
+       <property name="whatsThis" >
+        <string>Click here to find the next occurrence of the text you typed in.</string>
+       </property>
+       <property name="text" >
+        <string>Find Next</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+       <property name="flat" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="translate" >
+       <property name="text" >
+        <string>Translate</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="translateAll" >
+       <property name="text" >
+        <string>Translate All</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancel" >
+       <property name="whatsThis" >
+        <string>Click here to close this window.</string>
+       </property>
+       <property name="text" >
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>20</width>
+         <height>51</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+  <tabstop>ledFindWhat</tabstop>
+  <tabstop>ledTranslateTo</tabstop>
+  <tabstop>findNxt</tabstop>
+  <tabstop>translate</tabstop>
+  <tabstop>translateAll</tabstop>
+  <tabstop>cancel</tabstop>
+  <tabstop>ckMatchCase</tabstop>
+  <tabstop>ckMarkFinished</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>cancel</sender>
+   <signal>clicked()</signal>
+   <receiver>TranslateDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>397</x>
+     <y>157</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>373</x>
+     <y>109</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/translationsettings.ui b/tests/auto/uiloader/baseline/translationsettings.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4bd4be9e09361abcc55b9b917ddea1edfe374838
--- /dev/null
+++ b/tests/auto/uiloader/baseline/translationsettings.ui
@@ -0,0 +1,107 @@
+<ui version="4.0" >
+ <class>TranslationSettings</class>
+ <widget class="QDialog" name="TranslationSettings" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>346</width>
+    <height>125</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt Linguist - Translation file settings</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>Target language</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="cbLanguageList" />
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Language</string>
+        </property>
+        <property name="buddy" >
+         <cstring>cbLanguageList</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QComboBox" name="cbCountryList" />
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="lblCountry" >
+        <property name="text" >
+         <string>Country/Region</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>TranslationSettings</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>244</x>
+     <y>224</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>242</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>TranslationSettings</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>312</x>
+     <y>230</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>242</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/treewidgeteditor.ui b/tests/auto/uiloader/baseline/treewidgeteditor.ui
new file mode 100644
index 0000000000000000000000000000000000000000..1256a0a2fa94698ed74972ad7a391b73fca3dd09
--- /dev/null
+++ b/tests/auto/uiloader/baseline/treewidgeteditor.ui
@@ -0,0 +1,379 @@
+<ui version="4.0" >
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <class>qdesigner_internal::TreeWidgetEditor</class>
+ <widget class="QDialog" name="qdesigner_internal::TreeWidgetEditor" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>619</width>
+    <height>321</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Edit Tree Widget</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_3" >
+   <item row="0" column="0" >
+    <widget class="QGroupBox" name="itemsBox" >
+     <property name="title" >
+      <string>Tree Items</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="QTreeWidget" name="treeWidget" >
+        <property name="focusPolicy" >
+         <enum>Qt::TabFocus</enum>
+        </property>
+        <property name="toolTip" >
+         <string>Tree Items</string>
+        </property>
+        <column>
+         <property name="text" >
+          <string>1</string>
+         </property>
+        </column>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout_4" >
+        <item>
+         <widget class="QToolButton" name="newItemButton" >
+          <property name="toolTip" >
+           <string>New Item</string>
+          </property>
+          <property name="text" >
+           <string>&amp;New</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="newSubItemButton" >
+          <property name="toolTip" >
+           <string>New Subitem</string>
+          </property>
+          <property name="text" >
+           <string>New &amp;Subitem</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="deleteItemButton" >
+          <property name="toolTip" >
+           <string>Delete Item</string>
+          </property>
+          <property name="text" >
+           <string>&amp;Delete</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>28</width>
+            <height>23</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemLeftButton" >
+          <property name="toolTip" >
+           <string>Move Item Left (before Parent Item)</string>
+          </property>
+          <property name="text" >
+           <string>L</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemRightButton" >
+          <property name="toolTip" >
+           <string>Move Item Right (as a First Subitem of the Next Sibling Item)</string>
+          </property>
+          <property name="text" >
+           <string>R</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemUpButton" >
+          <property name="toolTip" >
+           <string>Move Item Up</string>
+          </property>
+          <property name="text" >
+           <string>U</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveItemDownButton" >
+          <property name="toolTip" >
+           <string>Move Item Down</string>
+          </property>
+          <property name="text" >
+           <string>D</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="2" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout_2" >
+        <item>
+         <widget class="QLabel" name="label_2" >
+          <property name="text" >
+           <string>Icon</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" />
+        </item>
+        <item>
+         <spacer name="horizontalSpacer" >
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>288</width>
+            <height>21</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QGroupBox" name="columnsBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Columns</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2" >
+      <item row="0" column="0" >
+       <widget class="QListWidget" name="listWidget" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Expanding" hsizetype="Ignored" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy" >
+         <enum>Qt::TabFocus</enum>
+        </property>
+        <property name="toolTip" >
+         <string>Tree Columns</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout_3" >
+        <item>
+         <widget class="QToolButton" name="newColumnButton" >
+          <property name="toolTip" >
+           <string>New Column</string>
+          </property>
+          <property name="text" >
+           <string>New</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="deleteColumnButton" >
+          <property name="toolTip" >
+           <string>Delete Column</string>
+          </property>
+          <property name="text" >
+           <string>Delete</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>13</width>
+            <height>23</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveColumnUpButton" >
+          <property name="toolTip" >
+           <string>Move Column Up</string>
+          </property>
+          <property name="text" >
+           <string>U</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="moveColumnDownButton" >
+          <property name="toolTip" >
+           <string>Move Column Down</string>
+          </property>
+          <property name="text" >
+           <string>D</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="2" column="0" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
+        <item>
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>Icon</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="qdesigner_internal::IconSelector" native="1" name="columnIconSelector" />
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0" >
+           <size>
+            <width>0</width>
+            <height>10</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>qdesigner_internal::IconSelector</class>
+   <extends>QWidget</extends>
+   <header>iconselector_p.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>treeWidget</tabstop>
+  <tabstop>newItemButton</tabstop>
+  <tabstop>newSubItemButton</tabstop>
+  <tabstop>deleteItemButton</tabstop>
+  <tabstop>moveItemLeftButton</tabstop>
+  <tabstop>moveItemRightButton</tabstop>
+  <tabstop>moveItemUpButton</tabstop>
+  <tabstop>moveItemDownButton</tabstop>
+  <tabstop>listWidget</tabstop>
+  <tabstop>newColumnButton</tabstop>
+  <tabstop>deleteColumnButton</tabstop>
+  <tabstop>moveColumnUpButton</tabstop>
+  <tabstop>moveColumnDownButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>qdesigner_internal::TreeWidgetEditor</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>450</x>
+     <y>259</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>292</x>
+     <y>272</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>qdesigner_internal::TreeWidgetEditor</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>539</x>
+     <y>266</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>556</x>
+     <y>275</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/trpreviewtool.ui b/tests/auto/uiloader/baseline/trpreviewtool.ui
new file mode 100644
index 0000000000000000000000000000000000000000..03441139ed56f4cd267ed26206268bfc575faf11
--- /dev/null
+++ b/tests/auto/uiloader/baseline/trpreviewtool.ui
@@ -0,0 +1,189 @@
+<ui version="4.0" >
+ <author></author>
+ <comment>*********************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the autotests 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$
+**
+*********************************************************************</comment>
+ <exportmacro></exportmacro>
+ <class>TrPreviewToolClass</class>
+ <widget class="QMainWindow" name="TrPreviewToolClass" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>593</width>
+    <height>466</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Qt Translation Preview Tool</string>
+  </property>
+  <widget class="QWidget" name="centralWidget" />
+  <widget class="QMenuBar" name="menuBar" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>593</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuView" >
+    <property name="title" >
+     <string>&amp;View</string>
+    </property>
+    <widget class="QMenu" name="menuViewViews" >
+     <property name="title" >
+      <string>&amp;Views</string>
+     </property>
+    </widget>
+    <addaction name="menuViewViews" />
+   </widget>
+   <widget class="QMenu" name="menuHelp" >
+    <property name="title" >
+     <string>&amp;Help</string>
+    </property>
+    <addaction name="actionAbout" />
+    <addaction name="actionAbout_Qt" />
+   </widget>
+   <widget class="QMenu" name="menuFile" >
+    <property name="title" >
+     <string>&amp;File</string>
+    </property>
+    <addaction name="actionOpenForm" />
+    <addaction name="actionLoadTranslation" />
+    <addaction name="actionReloadTranslations" />
+    <addaction name="separator" />
+    <addaction name="actionClose" />
+   </widget>
+   <addaction name="menuFile" />
+   <addaction name="menuView" />
+   <addaction name="menuHelp" />
+  </widget>
+  <widget class="QToolBar" name="mainToolBar" >
+   <property name="orientation" >
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <attribute name="toolBarArea" >
+    <number>4</number>
+   </attribute>
+   <addaction name="actionOpenForm" />
+   <addaction name="actionLoadTranslation" />
+   <addaction name="actionReloadTranslations" />
+  </widget>
+  <widget class="QStatusBar" name="statusBar" />
+  <widget class="QDockWidget" name="dwForms" >
+   <property name="windowTitle" >
+    <string>Forms</string>
+   </property>
+   <attribute name="dockWidgetArea" >
+    <number>1</number>
+   </attribute>
+   <widget class="QWidget" name="dockWidgetContents" >
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QListView" name="viewForms" >
+       <property name="editTriggers" >
+        <set>QAbstractItemView::NoEditTriggers</set>
+       </property>
+       <property name="alternatingRowColors" >
+        <bool>true</bool>
+       </property>
+       <property name="uniformItemSizes" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <action name="actionOpenForm" >
+   <property name="icon" >
+    <iconset resource="qttrpreviewtool.qrc" >:/images/open_form.png</iconset>
+   </property>
+   <property name="text" >
+    <string>&amp;Open Form...</string>
+   </property>
+  </action>
+  <action name="actionLoadTranslation" >
+   <property name="icon" >
+    <iconset resource="qttrpreviewtool.qrc" >:/images/load_translation.png</iconset>
+   </property>
+   <property name="text" >
+    <string>&amp;Load Translation...</string>
+   </property>
+  </action>
+  <action name="actionReloadTranslations" >
+   <property name="icon" >
+    <iconset resource="qttrpreviewtool.qrc" >:/images/reload_translations.png</iconset>
+   </property>
+   <property name="text" >
+    <string>&amp;Reload Translations</string>
+   </property>
+   <property name="shortcut" >
+    <string>F5</string>
+   </property>
+  </action>
+  <action name="actionClose" >
+   <property name="text" >
+    <string>&amp;Close</string>
+   </property>
+  </action>
+  <action name="actionAbout" >
+   <property name="text" >
+    <string>About</string>
+   </property>
+  </action>
+  <action name="actionAbout_Qt" >
+   <property name="text" >
+    <string>About Qt</string>
+   </property>
+  </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uiloader/baseline/validators.ui b/tests/auto/uiloader/baseline/validators.ui
new file mode 100644
index 0000000000000000000000000000000000000000..f05b96fbe0cfb6646b162bbf389829a687e2861d
--- /dev/null
+++ b/tests/auto/uiloader/baseline/validators.ui
@@ -0,0 +1,467 @@
+<ui version="4.0" >
+ <class>ValidatorsForm</class>
+ <widget class="QWidget" name="ValidatorsForm" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>526</width>
+    <height>668</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="LocaleSelector" name="localeSelector" />
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox" >
+     <property name="title" >
+      <string>QIntValidator</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>0</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>Min:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QSpinBox" name="minVal" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimum" >
+             <number>-1000000</number>
+            </property>
+            <property name="maximum" >
+             <number>1000000</number>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="label_2" >
+            <property name="text" >
+             <string>Max:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QSpinBox" name="maxVal" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimum" >
+             <number>-1000000</number>
+            </property>
+            <property name="maximum" >
+             <number>1000000</number>
+            </property>
+            <property name="value" >
+             <number>1000</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QFrame" name="frame" >
+          <property name="frameShape" >
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow" >
+           <enum>QFrame::Sunken</enum>
+          </property>
+          <layout class="QVBoxLayout" >
+           <property name="margin" >
+            <number>9</number>
+           </property>
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="LEDWidget" name="ledWidget" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="pixmap" >
+              <pixmap resource="validators.qrc" >:/ledoff.png</pixmap>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="label_7" >
+             <property name="text" >
+              <string>editingFinished()</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType" >
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>20</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="editor" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2" >
+     <property name="title" >
+      <string>QDoubleValidator</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
+        <item>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>0</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label_3" >
+            <property name="text" >
+             <string>Min:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QDoubleSpinBox" name="doubleMinVal" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimum" >
+             <double>-100000.000000000000000</double>
+            </property>
+            <property name="maximum" >
+             <double>100000.000000000000000</double>
+            </property>
+            <property name="value" >
+             <double>0.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2" >
+           <widget class="QLabel" name="label_5" >
+            <property name="text" >
+             <string>Format:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3" >
+           <widget class="QComboBox" name="doubleFormat" >
+            <item>
+             <property name="text" >
+              <string>Standard</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Scientific</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="label_4" >
+            <property name="text" >
+             <string>Max:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QDoubleSpinBox" name="doubleMaxVal" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+              <horstretch>1</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimum" >
+             <double>-100000.000000000000000</double>
+            </property>
+            <property name="maximum" >
+             <double>100000.000000000000000</double>
+            </property>
+            <property name="value" >
+             <double>1000.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2" >
+           <widget class="QLabel" name="label_6" >
+            <property name="text" >
+             <string>Decimals:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3" >
+           <widget class="QSpinBox" name="doubleDecimals" >
+            <property name="value" >
+             <number>2</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QFrame" name="frame_2" >
+          <property name="frameShape" >
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow" >
+           <enum>QFrame::Sunken</enum>
+          </property>
+          <layout class="QVBoxLayout" >
+           <property name="margin" >
+            <number>9</number>
+           </property>
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="LEDWidget" name="doubleLedWidget" >
+             <property name="text" >
+              <string/>
+             </property>
+             <property name="pixmap" >
+              <pixmap resource="validators.qrc" >:/ledoff.png</pixmap>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="label_8" >
+             <property name="text" >
+              <string>editingFinished()</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <spacer>
+        <property name="orientation" >
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType" >
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" >
+         <size>
+          <width>20</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="doubleEditor" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>20</width>
+       <height>111</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushButton" >
+       <property name="text" >
+        <string>Quit</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LEDWidget</class>
+   <extends>QLabel</extends>
+   <header>ledwidget.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LocaleSelector</class>
+   <extends>QComboBox</extends>
+   <header>localeselector.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources>
+  <include location="validators.qrc" />
+ </resources>
+ <connections>
+  <connection>
+   <sender>pushButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ValidatorsForm</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>94</x>
+     <y>274</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>131</x>
+     <y>260</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/baseline/wateringconfigdialog.ui b/tests/auto/uiloader/baseline/wateringconfigdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..a7f5349d78a58d226a02528448e9791904192446
--- /dev/null
+++ b/tests/auto/uiloader/baseline/wateringconfigdialog.ui
@@ -0,0 +1,446 @@
+<ui version="4.0" >
+ <class>WateringConfigDialog</class>
+ <widget class="QDialog" name="WateringConfigDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>334</width>
+    <height>550</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Watering Configuration</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <item>
+    <layout class="QGridLayout" >
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label_3" >
+       <property name="text" >
+        <string>Plant:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1" colspan="3" >
+      <widget class="QComboBox" name="plantComboBox" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <item>
+        <property name="text" >
+         <string>Squash</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Bean</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Carrot</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Strawberry</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Raspberry</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Blueberry</string>
+        </property>
+       </item>
+      </widget>
+     </item>
+     <item row="1" column="0" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>67</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="2" column="0" >
+      <widget class="QLabel" name="label_2" >
+       <property name="text" >
+        <string>Water when:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="1" colspan="3" >
+      <widget class="QCheckBox" name="temperatureCheckBox" >
+       <property name="text" >
+        <string>Temperature is higher than:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>16</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="4" column="2" >
+      <widget class="QSpinBox" name="temperatureSpinBox" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="specialValueText" >
+        <string/>
+       </property>
+       <property name="suffix" >
+        <string>C</string>
+       </property>
+       <property name="minimum" >
+        <number>10</number>
+       </property>
+       <property name="maximum" >
+        <number>60</number>
+       </property>
+       <property name="value" >
+        <number>20</number>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="3" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="5" column="1" colspan="3" >
+      <widget class="QCheckBox" name="rainCheckBox" >
+       <property name="text" >
+        <string>Rain less than:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="1" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>16</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="6" column="2" >
+      <widget class="QSpinBox" name="rainSpinBox" >
+       <property name="enabled" >
+        <bool>false</bool>
+       </property>
+       <property name="specialValueText" >
+        <string/>
+       </property>
+       <property name="suffix" >
+        <string>mm</string>
+       </property>
+       <property name="minimum" >
+        <number>1</number>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="3" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="7" column="2" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="8" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>Starting Time:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="8" column="1" colspan="3" >
+      <widget class="QTimeEdit" name="startTimeEdit" />
+     </item>
+     <item row="9" column="0" >
+      <widget class="QLabel" name="label_4" >
+       <property name="text" >
+        <string>Amount:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="9" column="1" colspan="3" >
+      <widget class="QSpinBox" name="amountSpinBox" >
+       <property name="suffix" >
+        <string>l</string>
+       </property>
+       <property name="minimum" >
+        <number>100</number>
+       </property>
+       <property name="maximum" >
+        <number>10000</number>
+       </property>
+       <property name="singleStep" >
+        <number>100</number>
+       </property>
+       <property name="value" >
+        <number>1000</number>
+       </property>
+      </widget>
+     </item>
+     <item row="10" column="0" >
+      <widget class="QLabel" name="label_5" >
+       <property name="text" >
+        <string>Source:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="10" column="1" colspan="3" >
+      <widget class="QComboBox" name="sourceComboBox" >
+       <item>
+        <property name="text" >
+         <string>Foundain</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>River</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Lake</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Public Water System</string>
+        </property>
+       </item>
+      </widget>
+     </item>
+     <item row="11" column="0" >
+      <widget class="QLabel" name="label_6" >
+       <property name="text" >
+        <string>Filter:</string>
+       </property>
+      </widget>
+     </item>
+     <item row="11" column="1" colspan="2" >
+      <widget class="QCheckBox" name="filterCheckBox" >
+       <property name="text" >
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="12" column="0" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>20</width>
+         <height>10</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="4" column="4" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" >
+     <item row="0" column="1" >
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item row="1" column="0" colspan="2" >
+      <widget class="HelpBrowser" name="helpBrowser" />
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="helpLabel" >
+       <property name="text" >
+        <string>&lt;a href="test">Show Details&lt;/a></string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="Line" name="line" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons" >
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>HelpBrowser</class>
+   <extends>QTextBrowser</extends>
+   <header>helpbrowser.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>WateringConfigDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>227</x>
+     <y>372</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>WateringConfigDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>286</x>
+     <y>378</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>temperatureCheckBox</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>temperatureSpinBox</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>132</x>
+     <y>101</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>132</x>
+     <y>125</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rainCheckBox</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>rainSpinBox</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>110</x>
+     <y>154</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>113</x>
+     <y>169</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/tests/auto/uiloader/desert.ini b/tests/auto/uiloader/desert.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/desert.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/dole.ini b/tests/auto/uiloader/dole.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/dole.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/gravlaks.ini b/tests/auto/uiloader/gravlaks.ini
new file mode 100644
index 0000000000000000000000000000000000000000..3a11cf2a49d1c20ec4a6b271a46e39ec86c77f4e
--- /dev/null
+++ b/tests/auto/uiloader/gravlaks.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=gravlaks.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/jackychan.ini b/tests/auto/uiloader/jackychan.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/jackychan.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/jeunehomme.ini b/tests/auto/uiloader/jeunehomme.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/jeunehomme.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/kangaroo.ini b/tests/auto/uiloader/kangaroo.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/kangaroo.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/kayak.ini b/tests/auto/uiloader/kayak.ini
new file mode 100644
index 0000000000000000000000000000000000000000..751a3883fd45a9dc09f5a16545ea10facbbb4052
--- /dev/null
+++ b/tests/auto/uiloader/kayak.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=wartburg
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/scruffy.ini b/tests/auto/uiloader/scruffy.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/scruffy.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/troll15.ini b/tests/auto/uiloader/troll15.ini
new file mode 100644
index 0000000000000000000000000000000000000000..57f5cd826553d65a3e4aa16e325dcfbc60dda2b1
--- /dev/null
+++ b/tests/auto/uiloader/troll15.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.nokia.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/tundra.ini b/tests/auto/uiloader/tundra.ini
new file mode 100644
index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119
--- /dev/null
+++ b/tests/auto/uiloader/tundra.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=kramer.troll.no
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1
diff --git a/tests/auto/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader.pro
new file mode 100644
index 0000000000000000000000000000000000000000..30ecb2fa103953a7193f1a8cabf579ca547605e7
--- /dev/null
+++ b/tests/auto/uiloader/uiloader.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS += tst_screenshot \
+           uiloader
diff --git a/tests/auto/uiloader/uiloader/tst_uiloader.cpp b/tests/auto/uiloader/uiloader/tst_uiloader.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..30b0c3c9db2f9ee68f6c75babf509a6090cdd5ee
--- /dev/null
+++ b/tests/auto/uiloader/uiloader/tst_uiloader.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite 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$
+**
+****************************************************************************/
+
+
+#include "uiloader.h"
+
+#include <QtTest/QtTest>
+#include <QApplication>
+#include <QDir>
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+class uiLoaderAutotest: public QObject
+{
+
+Q_OBJECT
+
+public slots:
+    void init();
+
+private slots:
+    void imageDiffTest();
+    
+private:
+    QString currentDir;
+        
+};
+
+
+
+void uiLoaderAutotest::init()
+{
+    currentDir = QDir::currentPath();
+#ifndef Q_OS_IRIX
+    QDir::setCurrent(QString(SRCDIR) + QString("/.."));
+#endif
+}
+
+void uiLoaderAutotest::imageDiffTest()
+{
+    //QApplication app(argc, argv);
+
+    QString pathToProgram   = currentDir + "/tst_screenshot/tst_screenshot";
+
+#ifdef Q_WS_MAC
+    pathToProgram += ".app/Contents/MacOS/tst_screenshot";
+#endif
+
+#ifdef Q_WS_WIN
+    pathToProgram += ".exe";
+#endif
+    uiLoader wrapper(pathToProgram);
+    QString errorMessage;
+    switch(wrapper.runAutoTests(&errorMessage)) {
+        case uiLoader::TestRunDone:
+        break;
+        case uiLoader::TestConfigError:
+        QVERIFY2(false, qPrintable(errorMessage));
+        break;
+        case uiLoader::TestNoConfig:
+        QSKIP(qPrintable(errorMessage), SkipAll);
+        break;
+    }
+}
+
+QTEST_MAIN(uiLoaderAutotest)
+#include "tst_uiloader.moc"
diff --git a/tests/auto/uiloader/uiloader/uiloader.cpp b/tests/auto/uiloader/uiloader/uiloader.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9246c30d805cc8257dea9753aca8af4218a71872
--- /dev/null
+++ b/tests/auto/uiloader/uiloader/uiloader.cpp
@@ -0,0 +1,814 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite 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$
+**
+****************************************************************************/
+
+
+#include "uiloader.h"
+
+#include <QtCore/QDir>
+#include <QtCore/QProcess>
+#include <QtCore/QSettings>
+#include <QtCore/QCoreApplication>
+
+#include <QtTest/QSignalSpy>
+#include <QTest>
+
+#include <QString>
+#include <QHash>
+#include <QFile>
+#include <QFtp>
+#include <QObject>
+#include <QHostInfo>
+#include <QWidget>
+#include <QImage>
+
+#include <QLibraryInfo>
+
+
+/*
+ * Our own QVERIFY since the one from QTest can't be used in non-void functions.
+ * Just pass the desired return value as third argument.
+ */
+
+#define QVERIFY3(statement, description, returnValue) \
+do {\
+    if (statement) {\
+        if (!QTest::qVerify(true, #statement, (description), __FILE__, __LINE__))\
+            return returnValue;\
+    } else {\
+        if (!QTest::qVerify(false, #statement, (description), __FILE__, __LINE__))\
+            return returnValue;\
+    }\
+} while (0)
+
+
+
+uiLoader::uiLoader(const QString &_pathToProgram)
+    : pathToProgram(_pathToProgram)
+{
+  //   initTests();
+}
+
+
+
+
+/*
+ * Load the configuration file for your machine.
+ * Return true if everything was loaded, else false.
+ *
+ * If the hostname is 'kayak', the config file should be 'kayak.ini':
+ *
+ *  [General]
+ *  ftpBaseDir=/arthurtest
+ *  ftpHost=wartburg
+ *  ftpPass=anonymouspass
+ *  ftpUser=anonymous
+ *  output=testresults
+ *
+ *  [engines]
+ *  1\engine=uic
+ *  size=1
+ */
+
+bool uiLoader::loadConfig(const QString &filePath, QString *errorMessage)
+{
+    qDebug() << " ========== Loading config file " << filePath;
+    configPath = filePath;
+
+    // If there is no config file, dont proceed;
+    QSettings settings( filePath, QSettings::IniFormat, this );
+
+    // all keys available?
+    QStringList keyList;
+    keyList << QLatin1String("output") << QLatin1String("ftpUser") << QLatin1String("ftpPass") << QLatin1String("ftpHost") << QLatin1String("ftpBaseDir");
+    for (int i = 0; i < keyList.size(); ++i) {
+        const QString currentKey = keyList.at(i);
+        if (!settings.contains(currentKey)) {
+            *errorMessage = QString::fromLatin1("Config file '%1' does not contain the required key '%2'.").arg(filePath, currentKey);
+            return false;
+        }
+
+        qDebug() << "\t\t(I)" << currentKey << "\t" << settings.value(currentKey).toString();
+    }
+
+    const int size = settings.beginReadArray(QLatin1String("engines"));
+    if (!size) {
+        *errorMessage = QString::fromLatin1("Config file '%1' does not contain the necessary section engines.").arg(filePath);
+        return false;
+    }
+
+    // get the values
+    for ( int i = 0; i < size; ++i ) {
+        settings.setArrayIndex(i);
+        qDebug() << "\t\t(I)" << "engine" << "\t" << settings.value( "engine" ).toString();
+        enginesToTest.insert(settings.value(QLatin1String("engine")).toString(), QLatin1String("Info here please :p"));
+    }
+    settings.endArray();
+
+    output = settings.value(QLatin1String("output")).toString();
+    output += QDir::separator() + QLibraryInfo::buildKey() + QDir::separator() + QString( qVersion() );
+    ftpUser = settings.value( QLatin1String("ftpUser") ).toString();
+    ftpPass = settings.value( QLatin1String("ftpPass") ).toString();
+    ftpHost = settings.value( QLatin1String("ftpHost") ).toString();
+    ftpBaseDir = settings.value( QLatin1String("ftpBaseDir") ).toString() + QDir::separator() + QHostInfo::localHostName().split( QLatin1Char('.')).first();
+    threshold = settings.value( QLatin1String("threshold") ).toString();
+
+    qDebug() << "\t(I) Values adapted:";
+    qDebug() << "\t\t(I)" << "ftpBaseDir" << "\t" << ftpBaseDir;
+    qDebug() << "\t\t(I)" << "output" << "\t" << output;
+
+    return true;
+}
+
+/*
+ * Upload testresults to the server in order to create the new baseline.
+ */
+
+void uiLoader::createBaseline()
+{
+    // can't use ftpUploadFile() here
+    qDebug() << " ========== Uploading baseline of only the latest test values ";
+
+    QFtp ftp;
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+    ftp.cd( ftpBaseDir );
+
+    QDir dir( output );
+
+    // Upload all the latest test results to the FTP server's baseline directory.
+    QHashIterator<QString, QString> i(enginesToTest);
+    while ( i.hasNext() ) {
+        i.next();
+
+        dir.cd( i.key() );
+        ftp.cd( i.key() + ".baseline" );
+
+        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+        dir.setNameFilters( QStringList() << "*.png" );
+        QFileInfoList list = dir.entryInfoList();
+
+        dir.cd( ".." );
+
+        for (int n = 0; n < list.size(); n++) {
+            QFileInfo fileInfo = list.at( n );
+            QFile file( QString( output ) + "/" + i.key() + "/" + fileInfo.fileName() );
+
+            errorMsg = "could not open file " + fileInfo.fileName();
+            QVERIFY2( file.open(QIODevice::ReadOnly), qPrintable(errorMsg));
+
+            QByteArray fileData = file.readAll();
+            file.close();
+
+            ftp.put( fileData, fileInfo.fileName(), QFtp::Binary );
+            qDebug() << "\t(I) Uploading:" << fileInfo.fileName() << "with file size" << fileData.size();
+        }
+
+        ftp.cd( ".." );
+    }
+
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+}
+
+
+
+/*
+ * Download baseline from server in order to compare results.
+ */
+
+void uiLoader::downloadBaseline()
+{
+    qDebug() << " ========== Downloading baseline...";
+
+    QHashIterator<QString, QString> i(enginesToTest);
+    while ( i.hasNext() ) {
+        i.next();
+        QString engineName = i.key();
+
+        QString dirWithFiles = ftpBaseDir + '/' + engineName + ".baseline";
+        QString ftpDir = ftpBaseDir + '/' + engineName + ".baseline";
+        QString saveToDir = QDir::currentPath() + '/' + output + '/' + engineName + ".baseline";
+
+        ftpList(dirWithFiles);
+
+        QList<QString> filesToDownload(lsDirList);
+        ftpGetFiles(filesToDownload, ftpDir, saveToDir);
+    }
+}
+
+
+
+/*
+ * Enter the dir pathDir local and remove all files (not recursive!)
+ */
+
+void uiLoader::clearDirectory(const QString& pathDir)
+{
+    qDebug() << "\t(I) Clearing directory local: " << pathDir;
+
+    QDir dir(pathDir);
+    dir.setFilter(QDir::Files);
+    QStringList list = dir.entryList();
+
+    for (int n = 0; n < list.size(); n++) {
+        QString filePath = pathDir + "/" + list.at(n);
+        QFile file(filePath);
+
+        errorMsg = "could not remove file " + filePath;
+        QVERIFY2( file.remove(), qPrintable(errorMsg));
+    }
+
+}
+
+
+
+/*
+ * Setup the local environment.
+ */
+
+void uiLoader::setupLocal()
+{
+    qDebug( " ========== Setting up local environment" );
+
+    QDir dir;
+
+    errorMsg = "could not create path " + output;
+    QVERIFY2( dir.mkpath(output), qPrintable(errorMsg) );
+
+    QHashIterator<QString, QString> j(enginesToTest);
+    while ( j.hasNext() ) {
+        j.next();
+
+        QString engineName = j.key();
+        QString engineDir = output + '/' + engineName;
+
+        // create <engine> or clean it
+        QString tmpPath = output + '/' + engineName;
+        if ( dir.exists(tmpPath) ) {
+            clearDirectory(tmpPath);
+        } else {
+            dir.mkdir(tmpPath);
+        }
+
+        // create *.baseline or clean it
+        tmpPath = output + '/' + engineName + ".baseline";
+        if ( dir.exists(tmpPath) ) {
+            clearDirectory(tmpPath);
+        } else {
+            dir.mkdir(tmpPath);
+        }
+
+        // create *.diff or clean it
+        tmpPath = output + '/' + engineName + ".diff";
+        if ( dir.exists(tmpPath) ) {
+            clearDirectory(tmpPath);
+        } else {
+            dir.mkdir(tmpPath);
+        }
+
+        // create *.failed or clean it
+        tmpPath = output + '/' + engineName + ".failed";
+        if ( dir.exists(tmpPath) ) {
+            clearDirectory(tmpPath);
+        } else {
+            dir.mkdir(tmpPath);
+        }
+    }
+
+    qDebug() << "\t(I) Created on local machine:" << output;
+}
+
+
+
+/*
+ * Setup the remote environment.
+ */
+
+void uiLoader::setupFTP()
+{
+    qDebug( " ========== Setting up FTP environment" );
+
+    // create dirs on ftp server
+    ftpMkDir( ftpBaseDir );
+    ftpBaseDir += "/" + QLibraryInfo::buildKey();
+    ftpMkDir( ftpBaseDir );
+    ftpBaseDir += "/" + QString( qVersion() );
+    ftpMkDir( ftpBaseDir );
+
+    QString dir = "";
+    ftpList(ftpBaseDir + '/' + dir);
+    QList<QString> dirListing(lsDirList);
+
+    // create *.failed, *.diff if necessary, else remove the files in it
+    // if *.baseline does not exist, memorize it
+    QHashIterator<QString, QString> j(enginesToTest);
+    while ( j.hasNext() ) {
+        j.next();
+
+        QString curDir = QString( j.key() ) + ".failed";
+        if ( dirListing.contains( curDir ) ) {
+            ftpClearDirectory(ftpBaseDir + "/" + curDir + "/");
+        } else {
+            ftpMkDir(ftpBaseDir + "/" + curDir + "/");
+        }
+
+        curDir = QString( j.key() ) + ".diff";
+        if ( dirListing.contains( curDir ) ) {
+            ftpClearDirectory(ftpBaseDir + "/" + curDir + "/");
+        } else {
+            ftpMkDir(ftpBaseDir + "/" + curDir + "/");
+        }
+
+        curDir = QString( j.key() ) + ".baseline";
+        lsNeedBaseline.clear();
+        if ( !dirListing.contains( curDir ) ) {
+            ftpMkDir(ftpBaseDir + "/" + curDir + "/");
+            lsNeedBaseline << j.key();
+        } else {
+            qDebug() << "\t(I)" << curDir << "exists on server.";
+        }
+    }
+}
+
+
+
+/*
+ * Download files listed in fileLisiting from dir pathRemoteDir on sever and save
+ * them in pathSaveDir.
+ */
+
+void uiLoader::ftpGetFiles(QList<QString>& fileListing, const QString& pathRemoteDir, const QString& pathSaveDir)
+{
+    QFtp ftp;
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+
+    if ( !fileListing.empty() ) {
+        for ( int i = 0; i < fileListing.size(); ++i ) {
+            QFile file( pathSaveDir + "/" +  fileListing.at(i) );
+
+            errorMsg = "could not open file for writing: " + file.fileName();
+            QVERIFY2( file.open(QIODevice::WriteOnly), qPrintable(errorMsg) );
+
+            QString ftpFileName = pathRemoteDir + '/' + fileListing.at(i);
+            ftp.get( ftpFileName, &file );
+            //qDebug() << "\t(I) Got" << file.fileName();
+            ftp.list(); //Only there to fill up a slot in the pendingCommands queue.
+
+            while ( ftp.hasPendingCommands() )
+                QCoreApplication::instance()->processEvents();
+
+            file.close();
+        }
+    }
+
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+
+    fileListing.clear();
+}
+
+
+
+/*
+ * Upload the file filePath to the server and save it there at filePathRemote.
+ *
+ * HINT: It seems you can't use this function in a loop, to many connections
+ *       are established?!
+ */
+
+bool uiLoader::ftpUploadFile(const QString& filePathRemote, const QString& filePath)
+{
+    QFile file(filePath);
+
+    errorMsg = "could not open file: " + filePath;
+    QVERIFY3( file.open(QIODevice::ReadOnly), qPrintable(errorMsg), false );
+
+    QByteArray contents = file.readAll();
+    file.close();
+
+    qDebug() << "\t(I) Uploading file to" << filePathRemote;
+
+    QFtp ftp;
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+
+    ftp.put( contents, filePathRemote, QFtp::Binary );
+
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+
+    return true;
+}
+
+
+
+/*
+ * Enter the dir dir on the server and remove all files (not recursive!)
+ */
+
+void uiLoader::ftpClearDirectory(const QString& pathDir)
+{
+    qDebug() << "\t(I) Clearing directory remote: " << pathDir;
+
+    ftpList(pathDir);
+    QList<QString> dirListing(lsDirList);
+
+    QFtp ftp;
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+
+    for (int i = 0; i < dirListing.size(); ++i) {
+        QString file = dirListing.at(i);
+        qDebug() << "\t(I) Removing" << pathDir + file;
+        ftp.remove(pathDir + file);
+    }
+
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+}
+
+
+
+/*
+ * Get a directory listing from the server in the dir dir.
+ * You can access it via lsDirList.
+ */
+
+void uiLoader::ftpList(const QString & dir) {
+    qDebug() << "\t(I) Getting list of files in dir" << dir;
+
+    lsDirList.clear();
+
+    QFtp ftp;
+    QObject::connect( &ftp, SIGNAL( listInfo( const QUrlInfo & ) ), this, SLOT( ftpAddLsEntry(const QUrlInfo & ) ) );
+    //QObject::connect( &ftp, SIGNAL( done( bool ) ), this, SLOT( ftpAddLsDone( bool ) ) );
+
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+
+    ftp.list( dir );
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+}
+
+
+
+/*
+ * Creates a dir on the ftp server.
+ *
+ * Hint: If the ftp.mkdir() fails we just assume the dir already exist.
+ */
+
+void uiLoader::ftpMkDir( QString pathDir )
+{
+    QFtp ftp;
+
+    QSignalSpy commandSpy(&ftp, SIGNAL(commandFinished(int, bool)));
+
+    ftp.connectToHost( ftpHost );
+    ftp.login( ftpUser, ftpPass );
+    const int command = ftp.mkdir( pathDir );
+    ftp.close();
+
+    while ( ftp.hasPendingCommands() )
+        QCoreApplication::instance()->processEvents();
+
+    // check wheter there was an error or not
+    for (int i = 0; i < commandSpy.count(); ++i) {
+        if (commandSpy.at(i).at(0) == command) {
+            if ( !commandSpy.at(i).at(1).toBool() ) {
+                qDebug() << "\t(I) Created at remote machine:" << pathDir;
+            } else {
+                qDebug() << "\t(I) Could not create on remote machine - probably the dir exists";
+            }
+        }
+    }
+}
+
+
+
+/*
+ * Just a slot, needed for ftpList().
+ */
+
+void uiLoader::ftpAddLsEntry( const QUrlInfo &urlInfo )
+{
+    //Just adding the file to the list
+    lsDirList << urlInfo.name();
+}
+
+/*
+ * Return a list of the test case ui files
+ */
+
+QStringList uiLoader::uiFiles() const
+{
+    QString baselinePath = QDir::currentPath();
+    baselinePath += QLatin1String("/baseline");
+    QDir dir(baselinePath);
+    dir.setFilter(QDir::Files);
+    dir.setNameFilters(QStringList(QLatin1String("*.ui")));
+    const QFileInfoList list = dir.entryInfoList();
+    QStringList rc;
+    const QChar slash = QLatin1Char('/');
+    foreach (const QFileInfo &fi, list) {
+        QString fileAbsolutePath = baselinePath;
+        fileAbsolutePath += slash;
+        fileAbsolutePath += fi.fileName();
+        rc.push_back(fileAbsolutePath);
+    }
+    return rc;
+}
+/*
+ * The actual method for generating local files that will be compared
+ * to the baseline.
+ *
+ * The external program uiscreenshot/uiscreenshot is called to generate
+ * *.png files of *.ui files.
+ */
+
+void uiLoader::executeTests()
+{
+    qDebug(" ========== Executing the tests...[generating pngs from uis]");
+
+    qDebug() << "Current Dir" << QDir::currentPath();
+
+    qDebug() << "\t(I) Using" << pathToProgram;
+
+    QProcess myProcess;
+    foreach(const QString &fileAbsolutePath, uiFiles()) {
+        qDebug() << "\t(I) Current file:" << fileAbsolutePath;
+
+        QHashIterator<QString, QString> j(enginesToTest);
+        while ( j.hasNext() ) {
+            j.next();
+
+            QString outputDirectory = output + '/' + j.key();
+
+            QStringList arguments;
+            arguments << fileAbsolutePath;
+            arguments << outputDirectory;
+
+            myProcess.start(pathToProgram, arguments);
+
+            // took too long?
+            errorMsg = "process does not exited normally (QProcess timeout) -  " + pathToProgram;
+            QVERIFY2( myProcess.waitForFinished(), qPrintable(errorMsg) );
+
+            qDebug() << "\n" << myProcess.readAllStandardError();
+
+            // check exit code/status
+            errorMsg = "process does not exited normally - " + pathToProgram;
+            QVERIFY2( myProcess.exitStatus() == QProcess::NormalExit, qPrintable(errorMsg) );
+            QVERIFY2( myProcess.exitCode() == EXIT_SUCCESS, qPrintable(errorMsg) );
+        }
+    }
+}
+
+/*
+ * Comparing generated files to the baseline.
+ */
+
+bool uiLoader::compare()
+{
+    qDebug( " ========== Now comparing the results to the baseline" );
+
+    QDir dir(output);
+
+    QHashIterator<QString, QString> i(enginesToTest);
+    while ( i.hasNext() ) {
+        i.next();
+
+        QString engineName = i.key();
+
+        // Perform comparisons between the two directories.
+        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+        dir.setNameFilters( QStringList() << "*.png" );
+        dir.cd( engineName + ".baseline" );
+
+        QFileInfoList list = dir.entryInfoList();
+
+        for (int i = 0; i < list.size(); ++i) {
+            QFileInfo fileInfo = list.at(i);
+            diff(output, engineName, fileInfo.fileName());
+        }
+    }
+
+    return true;
+}
+
+
+
+
+void uiLoader::diff(const QString& basedir, const QString& engine, const QString& fileName)
+{
+    QString filePathBaseline = basedir + "/" + engine + ".baseline/" + fileName;
+    QString filePathGenerated = basedir + "/" + engine + '/' + fileName;
+
+    qDebug() << "\t(I) Comparing" << filePathBaseline;
+    qDebug() << "\t(I) Comparing" << filePathGenerated;
+
+    QString filePathDiffImage = basedir + "/" + engine + ".diff/" + fileName;
+
+    if ( QFile::exists(filePathGenerated) ) {
+        QString filePathDiffImage = basedir + "/" + engine + ".diff/" + fileName;
+        int pixelDiff = imgDiff(filePathBaseline, filePathGenerated, filePathDiffImage);
+
+        if ( pixelDiff <= threshold.toInt() ) {
+            qDebug() << "\t(I) TEST OK";
+            QVERIFY(true);
+        } else {
+            qDebug() << "\t(I) TEST FAILED";
+            qDebug() << "\t(I)\t...saving baseline in *.failed";
+
+            // local: save in *.failed
+            QString filePathFailed = basedir + "/" + engine + ".failed/" + fileName;
+            errorMsg = "Could not save " + filePathGenerated + " to " + filePathFailed;
+            QVERIFY2( QFile::copy(filePathGenerated, filePathFailed), qPrintable(errorMsg) );
+
+            // remote: save in *.failed
+            QString filePathFailedRemote = ftpBaseDir + "/" + engine + ".failed" + "/" + fileName;
+            ftpUploadFile(filePathFailedRemote, filePathGenerated);
+
+            errorMsg = "Something broke in the image comparison with  " + filePathDiffImage;
+            QVERIFY2( (pixelDiff != -1), qPrintable(errorMsg) );
+
+            // remote: save in *.diff
+            QString filePathDiffRemote = ftpBaseDir + "/" + engine + ".diff" + "/" + fileName;
+            ftpUploadFile(filePathDiffRemote, filePathDiffImage);
+            QFAIL(qPrintable(fileName));
+        }
+
+    } else {
+        qWarning() << "\t(W) Expected generated file" << filePathGenerated << "does not exist.";
+        qWarning() << "\t(W)   ...saving baseline in *.failed";
+
+        // save local
+        QString filePathMissing = basedir + '/' + engine + ".failed/" + fileName + "_missing";
+        errorMsg = "Could not save " + filePathMissing;
+        QVERIFY2( QFile::copy(filePathBaseline, filePathMissing), qPrintable(errorMsg) );
+
+        // save remote
+        QString filePathDiffRemote = ftpBaseDir + "/" + engine + ".diff" + "/" + fileName;
+        ftpUploadFile(filePathDiffRemote, filePathBaseline);
+
+        errorMsg = filePathGenerated + " was not generated, but baseline for this file exists";
+        QVERIFY2(false, qPrintable(errorMsg));
+    }
+
+}
+
+/*
+ * Execution starts here.
+ */
+
+uiLoader::TestResult uiLoader::runAutoTests(QString *errorMessage)
+{
+    // SVG needs this widget...
+    QWidget dummy;
+
+    qDebug() << "Running test on buildkey:" << QLibraryInfo::buildKey() << "  qt version:" << qVersion();
+    qDebug() << "Initializing tests...";
+
+    // load config
+    const QString configFileName = QHostInfo::localHostName().split(QLatin1Char('.')).first() + QLatin1String(".ini");
+    const QFileInfo fi(configFileName);
+    if (!fi.isFile() || !fi.isReadable()) {
+        *errorMessage = QString::fromLatin1("Config file '%1' does not exist or is not readable.").arg(configFileName);
+        return TestNoConfig;
+    }
+
+    if (!loadConfig(configFileName, errorMessage))
+        return TestConfigError;
+
+    // reset the local environment where the results are stored
+    setupLocal();
+
+    // reset the FTP environment where the results are stored
+    setupFTP();
+
+    // retrieve the latest test result baseline from the FTP server.
+    downloadBaseline();
+
+    // execute tests
+    executeTests();
+
+    // upload testresults as new baseline or compare results
+    if ( lsNeedBaseline.size() )
+        createBaseline();
+    else
+        compare();
+
+    return TestRunDone;
+}
+
+int uiLoader::imgDiff(const QString fileA, const QString fileB, const QString output)
+{
+//  qDebug() << "Comparing " << fileA << " and " << fileB << " outputting to " << output;
+  QImage imageA(fileA);
+  QImage imageB(fileB);
+
+  // Invalid images
+  if (imageA.isNull() || imageB.isNull())
+  {
+    qDebug() << "Fatal error: unable to open one or more input images.";
+    return false;
+  }
+
+  //Choose the largest image size, so that the output can capture the entire diff.
+  QSize largestSize = imageA.size();
+  QSize otherSize = imageB.size();
+
+  if (largestSize.width() < otherSize.width())
+    largestSize.setWidth(otherSize.width());
+
+  if (largestSize.height() < otherSize.height())
+    largestSize.setHeight(otherSize.height());
+
+  QImage imageDiff(largestSize, QImage::Format_ARGB32);
+
+  imageA = imageA.convertToFormat(QImage::Format_ARGB32);
+  imageB = imageB.convertToFormat(QImage::Format_ARGB32);
+
+  int pixelDiff = 0;
+
+  for (int y = 0; y < imageDiff.height(); ++y)
+  {
+    for (int x = 0; x < imageDiff.width(); ++x)
+    {
+      //Are the pixels within range? Else, draw a black pixel in diff.
+      if (imageA.valid(x,y) && imageB.valid(x,y))
+      {
+        //Both images have a pixel at x,y - are they the same? If not, black pixel in diff.
+        if (imageA.pixel(x,y) != imageB.pixel(x,y))
+        {
+          imageDiff.setPixel(x,y,0xff000000);
+          pixelDiff++;
+        }
+        else
+          imageDiff.setPixel(x,y,0xffffffff);
+      }
+      else
+      {
+        imageDiff.setPixel(x,y,0xff000000);
+        pixelDiff++;
+      }
+    }
+  }
+
+  imageDiff.setText("comment", QString::number(pixelDiff));
+
+  if (!imageDiff.save(output, "PNG"))
+      pixelDiff = -1;
+
+  return pixelDiff;
+}
diff --git a/tests/auto/uiloader/uiloader/uiloader.h b/tests/auto/uiloader/uiloader/uiloader.h
new file mode 100644
index 0000000000000000000000000000000000000000..b7ee45fd575cdb6e4d0c07289cc0d41ccbc28c6a
--- /dev/null
+++ b/tests/auto/uiloader/uiloader/uiloader.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite 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$
+**
+****************************************************************************/
+#ifndef ATWRAPPER_H
+#define ATWRAPPER_H
+
+#include <QHash>
+#include <QString>
+#include <QUrlInfo>
+#include <QList>
+#include <QImage>
+
+class uiLoader : public QObject
+{
+    Q_OBJECT
+
+    public:
+        uiLoader(const QString &pathToProgram);
+
+        enum TestResult { TestRunDone, TestConfigError, TestNoConfig };
+        TestResult runAutoTests(QString *errorMessage);
+
+    private:
+        bool loadConfig(const QString &, QString *errorMessage);
+        void initTests();
+
+        void setupFTP();
+        void setupLocal();
+        void clearDirectory(const QString&);
+
+        void ftpMkDir( QString );
+        void ftpGetFiles(QList<QString>&, const QString&,  const QString&);
+        void ftpList(const QString&);
+        void ftpClearDirectory(const QString&);
+        bool ftpUploadFile(const QString&, const QString&);
+        void executeTests();
+
+        void createBaseline();
+        void downloadBaseline();
+
+        bool compare();
+
+        void diff(const QString&, const QString&, const QString&);
+        int imgDiff(const QString fileA, const QString fileB, const QString output);
+        QStringList uiFiles() const;
+    
+        QHash<QString, QString> enginesToTest;
+
+        QString framework;
+        QString suite;
+        QString output;
+        QString ftpUser;
+        QString ftpPass;
+        QString ftpHost;
+        QString ftpBaseDir;
+        QString threshold;
+
+        QString errorMsg;
+
+        QList<QString> lsDirList;
+        QList<QString> lsNeedBaseline;
+
+        QString configPath;
+        
+        QString pathToProgram;
+
+    private slots:
+        //void ftpAddLsDone( bool );
+        void ftpAddLsEntry( const QUrlInfo &urlInfo );
+};
+
+#endif
diff --git a/tests/auto/uiloader/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader/uiloader.pro
new file mode 100644
index 0000000000000000000000000000000000000000..12624703ff80b9fa7eebd040e814927db03f7b92
--- /dev/null
+++ b/tests/auto/uiloader/uiloader/uiloader.pro
@@ -0,0 +1,30 @@
+load(qttest_p4)
+
+TEMPLATE = app
+!embedded:CONFIG += uitools
+TARGET = ../tst_uiloader
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+win32 {
+  CONFIG(debug, debug|release) {
+    TARGET = ../../debug/tst_uiloader
+} else {
+    TARGET = ../../release/tst_uiloader
+  }
+}
+
+QT += widgets network
+
+wince*|symbian: {
+   configuration.files = ../*.ini
+   configuration.path = .
+
+   screenapp.files = ../tst_screenshot/tst_screenshot.exe
+   screenapp.path = tst_screenshot
+   
+   DEPLOYMENT += configuration screenapp
+}
+
+# Input
+HEADERS += uiloader.h
+SOURCES += tst_uiloader.cpp uiloader.cpp
diff --git a/tests/auto/uiloader/wartburg.ini b/tests/auto/uiloader/wartburg.ini
new file mode 100644
index 0000000000000000000000000000000000000000..751a3883fd45a9dc09f5a16545ea10facbbb4052
--- /dev/null
+++ b/tests/auto/uiloader/wartburg.ini
@@ -0,0 +1,11 @@
+[General]
+ftpBaseDir=/arthurtest
+ftpHost=wartburg
+ftpPass=anonymouspass
+ftpUser=anonymous
+output=testresults
+threshold=20
+
+[engines]
+1\engine=uic
+size=1