diff --git a/.gitignore b/.gitignore
index bb96a517edfb7713c6334e9cc19670dc71ea6990..87349bd812255613efe4b16f39d341062eff1bde 100644
--- a/.gitignore
+++ b/.gitignore
@@ -262,3 +262,6 @@ src/xml/lib/
 *.dep
 *.map
 work
+
+# Generated static plugin import sources
+*_plugin_import.cpp
diff --git a/dist/changes-5.0.1 b/dist/changes-5.0.1
new file mode 100644
index 0000000000000000000000000000000000000000..fa12d6434a19355439ac9f68a59282155a141789
--- /dev/null
+++ b/dist/changes-5.0.1
@@ -0,0 +1,59 @@
+Qt 5.0.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.0.0.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+  http://qt-project.org/doc/qt-5.0/
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+  http://bugreports.qt-project.org/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+
+****************************************************************************
+*                           General                                        *
+****************************************************************************
+
+General Improvements
+--------------------
+
+Third party components
+----------------------
+
+****************************************************************************
+*                          Library                                         *
+****************************************************************************
+
+
+****************************************************************************
+*                      Platform Specific Changes                           *
+****************************************************************************
+
+
+****************************************************************************
+*                      Compiler Specific Changes                           *
+****************************************************************************
+
+
+****************************************************************************
+*                          Tools                                           *
+****************************************************************************
+
+Qt Designer
+-----------
+
+Qt Help
+-------
+
+Qt UI Tools
+-----------
+
+****************************************************************************
+*                          Plugins                                         *
+****************************************************************************
+
diff --git a/examples/assistant/remotecontrol/remotecontrol.cpp b/examples/assistant/remotecontrol/remotecontrol.cpp
index 2569829a597b2838a812167468bd47145055185e..018999373a1264968ebdae0ce768d24d980be03d 100644
--- a/examples/assistant/remotecontrol/remotecontrol.cpp
+++ b/examples/assistant/remotecontrol/remotecontrol.cpp
@@ -59,10 +59,10 @@ RemoteControl::RemoteControl(QWidget *parent, Qt::WindowFlags flags)
         this, SLOT(on_urlButton_clicked()));
 
     QString rc;
-    QTextStream(&rc) << QLatin1String("qthelp://com.trolltech.qt.")
+    QTextStream(&rc) << QLatin1String("qthelp://org.qt-project.qtdoc.")
                      << (QT_VERSION >> 16) << ((QT_VERSION >> 8) & 0xFF)
                      << (QT_VERSION & 0xFF)
-                     << QLatin1String("/qdoc/index.html");
+                     << QLatin1String("/qtdoc/index.html");
 
     ui.startUrlLineEdit->setText(rc);
 
diff --git a/examples/assistant/remotecontrol/remotecontrol.pro b/examples/assistant/remotecontrol/remotecontrol.pro
index 78ce822d8b19ef6d97dad9efabd76051e9cd00b7..fb9ce4df9440db1add66fdc75ff06a64f14fb623 100644
--- a/examples/assistant/remotecontrol/remotecontrol.pro
+++ b/examples/assistant/remotecontrol/remotecontrol.pro
@@ -7,6 +7,6 @@ SOURCES   += main.cpp \
 FORMS     += remotecontrol.ui
 RESOURCES += remotecontrol.qrc
 
-target.path = $$[QT_INSTALL_EXAMPLES]/help/remotecontrol
+target.path = $$[QT_INSTALL_EXAMPLES]/assistant/remotecontrol
 INSTALLS += target
 
diff --git a/examples/designer/arthurplugin/arthurplugin.pro b/examples/designer/arthurplugin/arthurplugin.pro
index ea0939891ff73f06f17bcb10e23c8a411f1502b3..9d627180ae499659ac7cf81c802dbeceab23530f 100644
--- a/examples/designer/arthurplugin/arthurplugin.pro
+++ b/examples/designer/arthurplugin/arthurplugin.pro
@@ -18,7 +18,7 @@ INSTALLS += target
 
 }
 
-contains(QT_CONFIG, opengl) {
+qtHaveModule(opengl) {
     DEFINES += QT_OPENGL_SUPPORT
     QT += opengl
 }
diff --git a/examples/examples.pro b/examples/examples.pro
index cacdec563ebbe7451ea753f1e1eb06c95035de4d..4955969c3f9baf8ae2b40d12351534aea4df202f 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -1,3 +1,3 @@
 TEMPLATE = subdirs
-!isEmpty(QT.widgets.name): SUBDIRS += help designer linguist uitools assistant
+qtHaveModule(widgets): SUBDIRS += help designer linguist uitools assistant
 
diff --git a/src/assistant/assistant/assistant.pro b/src/assistant/assistant/assistant.pro
index 6ebd9ee22975a4c80c1d85c1d3c2d4ff9817596e..168725c4c1c70612911792f678fa35d0a76d83fd 100644
--- a/src/assistant/assistant/assistant.pro
+++ b/src/assistant/assistant/assistant.pro
@@ -2,14 +2,14 @@ TEMPLATE = app
 LANGUAGE = C++
 TARGET = assistant
 DESTDIR = $$QT.help.bins
-!isEmpty(QT.webkitwidgets.name) {
+qtHaveModule(webkitwidgets) {
     QT += webkitwidgets
 } else {
     DEFINES += QT_NO_WEBKIT
 }
 !build_pass:contains(QT_CONFIG, build_all): CONFIG += release
 QT += widgets network help sql help
-!isEmpty(QT.printsupport.name): QT += printsupport
+qtHaveModule(printsupport): QT += printsupport
 PROJECTNAME = Assistant
 
 include(../../shared/fontpanel/fontpanel.pri)
@@ -79,7 +79,7 @@ SOURCES += aboutdialog.cpp \
     openpageswidget.cpp \
     openpagesmanager.cpp \
     openpagesswitcher.cpp
-contains(QT_CONFIG, webkitwidgets) {
+qtHaveModule(webkitwidgets) {
     SOURCES += helpviewer_qwv.cpp
 } else {
     SOURCES += helpviewer_qtb.cpp
diff --git a/src/assistant/assistant/doc/qtassistant.qdocconf b/src/assistant/assistant/doc/qtassistant.qdocconf
index 69324860b21ffda7fa2bf18acf2d5b4f20e293d2..76e65903dfb9c3f6b23647599b3e2dd783faf2ad 100644
--- a/src/assistant/assistant/doc/qtassistant.qdocconf
+++ b/src/assistant/assistant/doc/qtassistant.qdocconf
@@ -11,7 +11,7 @@ qhp.QtAssistant.namespace           = org.qt-project.assistant.500
 qhp.QtAssistant.virtualFolder       = assistant
 qhp.QtAssistant.indexTitle          = Qt Assistant Manual
 
-qhp.QtAssistant.filterAttributes    = qt 5.0.0 tools assistant
+qhp.QtAssistant.filterAttributes    = qt 5.0.1 tools assistant
 qhp.QtAssistant.customFilters.QtAssistant.name = Qt Assistant Manual
 qhp.QtAssistant.customFilters.QtAssistant.filterAttributes = qt tools assistant
 qhp.QtAssistant.subprojects         = manual examples
@@ -19,7 +19,7 @@ qhp.QtAssistant.subprojects.manual.title = Manual
 qhp.QtAssistant.subprojects.manual.indexTitle = Qt Assistant Manual
 qhp.QtAssistant.subprojects.manual.selectors = fake:page
 qhp.QtAssistant.subprojects.examples.title = Examples
-qhp.QtAssistant.subprojects.examples.indexTitle = Qt Examples
+qhp.QtAssistant.subprojects.examples.indexTitle = Qt Assistant Examples
 qhp.QtAssistant.subprojects.examples.selectors = fake:example
 qhp.QtAssistant.subprojects.examples.sortPages = true
 
diff --git a/src/assistant/clucene/qclucene_global_p.h b/src/assistant/clucene/qclucene_global_p.h
index e84fa2812c187bed07ac466c9573abc9a78c4fa6..c16e74d24b13168160a98d0a3c4144a08e23022e 100644
--- a/src/assistant/clucene/qclucene_global_p.h
+++ b/src/assistant/clucene/qclucene_global_p.h
@@ -102,8 +102,8 @@ QT_BEGIN_NAMESPACE
 #   define CL_NS2(sub,sub2)
 #endif
 
-namespace {
-    TCHAR* QStringToTChar(const QString &str)
+namespace QtCLuceneHelpers {
+    inline TCHAR* QStringToTChar(const QString &str)
     {
         TCHAR *string = new TCHAR[(str.length() +1) * sizeof(TCHAR)];
         memset(string, 0, (str.length() +1) * sizeof(TCHAR));
@@ -116,7 +116,7 @@ namespace {
         return string;
     }
 
-    QString TCharToQString(const TCHAR *string)
+    inline QString TCharToQString(const TCHAR *string)
     {
         #if defined(UNICODE) || defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
             QString retValue = QString::fromWCharArray(string);
@@ -126,6 +126,7 @@ namespace {
         #endif
     }
 }
+using namespace QtCLuceneHelpers;
 
 QT_END_NAMESPACE
 
diff --git a/src/assistant/help/doc/qthelp.qdocconf b/src/assistant/help/doc/qthelp.qdocconf
index 2ac84c1378dc6b676d3b9c171417f0b939fab188..2d05db5a5d5061061772e116816790d496027493 100644
--- a/src/assistant/help/doc/qthelp.qdocconf
+++ b/src/assistant/help/doc/qthelp.qdocconf
@@ -3,7 +3,7 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
 project                 = QtHelp
 description             = Qt Help Reference Documentation
 url                     = http://qt-project.org/doc/qthelp
-version                 = 5.0.0
+version                 = 5.0.1
 
 examplesinstallpath     = help
 
@@ -15,9 +15,9 @@ qhp.QtHelp.virtualFolder       = qthelp
 qhp.QtHelp.indexTitle          = Qt Help
 qhp.QtHelp.indexRoot           =
 
-qhp.QtHelp.filterAttributes    = qthelp 5.0.0 tools assistant qtrefdoc
-qhp.QtHelp.customFilters.QtHelp.name = QtHelp 5.0.0
-qhp.QtHelp.customFilters.QtHelp.filterAttributes = qthelp 5.0.0
+qhp.QtHelp.filterAttributes    = qthelp 5.0.1 tools assistant qtrefdoc
+qhp.QtHelp.customFilters.QtHelp.name = QtHelp 5.0.1
+qhp.QtHelp.customFilters.QtHelp.filterAttributes = qthelp 5.0.1
 qhp.QtHelp.subprojects         = classes
 qhp.QtHelp.subprojects.classes.title = C++ Classes
 qhp.QtHelp.subprojects.classes.indexTitle = Qt Help C++ Classes
diff --git a/src/assistant/help/qhelpsearchengine.h b/src/assistant/help/qhelpsearchengine.h
index b95ca5fda9a886279c9f8d8d018b11ee4e77d8cf..3c158c000d549887d1ba3213f9f5488739b761b8 100644
--- a/src/assistant/help/qhelpsearchengine.h
+++ b/src/assistant/help/qhelpsearchengine.h
@@ -67,8 +67,8 @@ public:
 
     QHelpSearchQuery()
         : fieldName(DEFAULT) { wordList.clear(); }
-    QHelpSearchQuery(FieldName field, const QStringList &wordList)
-        : fieldName(field), wordList(wordList) {}
+    QHelpSearchQuery(FieldName field, const QStringList &wordList_)
+        : fieldName(field), wordList(wordList_) {}
 
     FieldName fieldName;
     QStringList wordList;
diff --git a/src/designer/src/designer/assistantclient.cpp b/src/designer/src/designer/assistantclient.cpp
index cdde59952efff03d8bfbb0353fda9c34f0d98e30..f112f3e90fac296ddc8e6f87514e3979d1c7c8ad 100644
--- a/src/designer/src/designer/assistantclient.cpp
+++ b/src/designer/src/designer/assistantclient.cpp
@@ -164,12 +164,12 @@ QString AssistantClient::documentUrl(const QString &module, int qtVersion)
 
 QString AssistantClient::designerManualUrl(int qtVersion)
 {
-    return documentUrl(QStringLiteral("designer"), qtVersion);
+    return documentUrl(QStringLiteral("qtdesigner"), qtVersion);
 }
 
 QString AssistantClient::qtReferenceManualUrl(int qtVersion)
 {
-    return documentUrl(QStringLiteral("qt"), qtVersion);
+    return documentUrl(QStringLiteral("qtdoc"), qtVersion);
 }
 
 QT_END_NAMESPACE
diff --git a/src/designer/src/designer/designer.pro b/src/designer/src/designer/designer.pro
index 0a3af78824ecdfa7771a3a1f1f6c52bc7cf2daf7..6eb07fdddbef140dd0dd6f745a092a1b3ded95ce 100644
--- a/src/designer/src/designer/designer.pro
+++ b/src/designer/src/designer/designer.pro
@@ -1,6 +1,6 @@
 DESTDIR = $$QT.designer.bins
 QT += core-private widgets xml network designer-private designercomponents
-!isEmpty(QT.printsupport.name): QT += printsupport
+qtHaveModule(printsupport): QT += printsupport
 !build_pass:contains(QT_CONFIG, build_all): CONFIG += release
 
 INCLUDEPATH += \
diff --git a/src/designer/src/designer/doc/qtdesigner.qdocconf b/src/designer/src/designer/doc/qtdesigner.qdocconf
index 634ad4ec9dcca612c7f7c303876c448de6da4f1e..5130ae5b07d474b2dede39694ed763eadc3d10e7 100644
--- a/src/designer/src/designer/doc/qtdesigner.qdocconf
+++ b/src/designer/src/designer/doc/qtdesigner.qdocconf
@@ -11,7 +11,7 @@ qhp.QtDesigner.namespace           = org.qt-project.designer.500
 qhp.QtDesigner.virtualFolder       = qtdesigner
 qhp.QtDesigner.indexTitle          = Qt Designer Manual
 
-qhp.QtDesigner.filterAttributes    = qt 5.0.0 tools designer
+qhp.QtDesigner.filterAttributes    = qt 5.0.1 tools designer
 qhp.QtDesigner.customFilters.QtDesigner.name = Qt Designer Manual
 qhp.QtDesigner.customFilters.QtDesigner.filterAttributes = qt tools designer
 qhp.QtDesigner.subprojects         = manual examples
diff --git a/src/designer/src/lib/shared/qlayout_widget.cpp b/src/designer/src/lib/shared/qlayout_widget.cpp
index d6d58ad18897a51df9e344807136b423d76687cf..2959be285511871d5761cae6610309429d13bd55 100644
--- a/src/designer/src/lib/shared/qlayout_widget.cpp
+++ b/src/designer/src/lib/shared/qlayout_widget.cpp
@@ -1575,6 +1575,7 @@ public:
     virtual void insertColumn(int /*column*/) {}
 
     virtual int findItemAt(int /*at_row*/, int /*at_column*/) const {    return -1; }
+    using QLayoutSupport::findItemAt;
 
 private:
     virtual void setCurrentCellFromIndicatorOnEmptyCell(int index);
@@ -1702,6 +1703,7 @@ public:
     void insertWidget(QWidget *widget, const QPair<int, int> &cell);
     virtual void removeWidget(QWidget *widget) { helper()->removeWidget(layout(), widget); }
     virtual int findItemAt(int row, int column) const;
+    using QLayoutSupport::findItemAt;
 
 protected:
     GridLikeLayout *gridLikeLayout() const {
diff --git a/src/designer/src/plugins/plugins.pro b/src/designer/src/plugins/plugins.pro
index 5f04597637e3855230d08c4b11d6a0c2195b29fc..44f5e34e92485dac643638df21ebd6c2489e71f1 100644
--- a/src/designer/src/plugins/plugins.pro
+++ b/src/designer/src/plugins/plugins.pro
@@ -2,6 +2,6 @@ TEMPLATE = subdirs
 CONFIG += ordered
 
 REQUIRES = !CONFIG(static,shared|static)
-# contains(QT_CONFIG, opengl): SUBDIRS += tools/view3d
-contains(QT_CONFIG, webkitwidgets): SUBDIRS += qwebview
+# qtHaveModule(opengl): SUBDIRS += tools/view3d
+qtHaveModule(webkitwidgets): SUBDIRS += qwebview
 # win32: contains(QT_CONFIG, activeqt): SUBDIRS += activeqt
diff --git a/src/designer/src/uitools/doc/qtuitools.qdocconf b/src/designer/src/uitools/doc/qtuitools.qdocconf
index 15a25e87ac0c2c8ff4cd415bb39d97f98bc08649..34407302b8c7b89ffba598abcd429041682df2ca 100644
--- a/src/designer/src/uitools/doc/qtuitools.qdocconf
+++ b/src/designer/src/uitools/doc/qtuitools.qdocconf
@@ -3,7 +3,7 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
 project                 = QtUiTools
 description             = Qt UI Tools Reference Documentation
 url                     = http://qt-project.org/doc/qtuitools
-version                 = 5.0.0
+version                 = 5.0.1
 
 examplesinstallpath     = uitools
 
@@ -15,9 +15,9 @@ qhp.QtUiTools.virtualFolder       = qtuitools
 qhp.QtUiTools.indexTitle          = Qt UI Tools
 qhp.QtHelp.indexRoot           =
 
-qhp.QtUiTools.filterAttributes    = qtuitools 5.0.0 tools designer qtrefdoc
-qhp.QtUiTools.customFilters.QtUiTools.name = QtUiTools 5.0.0
-qhp.QtUiTools.customFilters.QtUiTools.filterAttributes = qtuitools 5.0.0
+qhp.QtUiTools.filterAttributes    = qtuitools 5.0.1 tools designer qtrefdoc
+qhp.QtUiTools.customFilters.QtUiTools.name = QtUiTools 5.0.1
+qhp.QtUiTools.customFilters.QtUiTools.filterAttributes = qtuitools 5.0.1
 qhp.QtUiTools.subprojects         = classes
 qhp.QtUiTools.subprojects.classes.title = C++ Classes
 qhp.QtUiTools.subprojects.classes.indexTitle = Qt UI Tools C++ Classes
diff --git a/src/linguist/linguist.pro b/src/linguist/linguist.pro
index 7123998923441e0d36b2b232c5e7f92fadd333b7..04b0ab648f20c1eff8fb43437c2be077016990dd 100644
--- a/src/linguist/linguist.pro
+++ b/src/linguist/linguist.pro
@@ -3,7 +3,7 @@ SUBDIRS  = \
     lrelease \
     lupdate \
     lconvert
-!no-png:!isEmpty(QT.widgets.name): SUBDIRS += linguist
+!no-png:qtHaveModule(widgets): SUBDIRS += linguist
 
 win32:CMAKE_BIN_SUFFIX = ".exe"
 
diff --git a/src/linguist/linguist/doc/qtlinguist.qdocconf b/src/linguist/linguist/doc/qtlinguist.qdocconf
index 8c592ff19debb0840a540af90d151def8420f1ad..c09f52b63983124b67497a6442c84c8b4b807e29 100644
--- a/src/linguist/linguist/doc/qtlinguist.qdocconf
+++ b/src/linguist/linguist/doc/qtlinguist.qdocconf
@@ -11,7 +11,7 @@ qhp.QtLinguist.namespace           = org.qt-project.linguist.500
 qhp.QtLinguist.virtualFolder       = qtlinguist
 qhp.QtLinguist.indexTitle          = Qt Linguist Manual
 
-qhp.QtLinguist.filterAttributes    = qt 5.0.0 tools qtlinguist
+qhp.QtLinguist.filterAttributes    = qt 5.0.1 tools qtlinguist
 qhp.QtLinguist.customFilters.QtLinguist.name = Qt Linguist Manual
 qhp.QtLinguist.customFilters.QtLinguist.filterAttributes = qt tools qtlinguist
 qhp.QtLinguist.subprojects         = manual examples
@@ -19,7 +19,7 @@ qhp.QtLinguist.subprojects.manual.title = Manual
 qhp.QtLinguist.subprojects.manual.indexTitle = Qt Linguist Manual
 qhp.QtLinguist.subprojects.manual.selectors = fake:page
 qhp.QtLinguist.subprojects.examples.title = Examples
-qhp.QtLinguist.subprojects.examples.indexTitle = Qt Examples
+qhp.QtLinguist.subprojects.examples.indexTitle = Qt Linguist Examples
 qhp.QtLinguist.subprojects.examples.selectors = fake:example
 qhp.QtLinguist.subprojects.examples.sortPages = true
 
diff --git a/src/linguist/linguist/linguist.pro b/src/linguist/linguist/linguist.pro
index 795bd109d8fa66e1d992ec225fd5ab3246445bb8..a19fec09b2d81543897cae836ff053fed4446dfc 100644
--- a/src/linguist/linguist/linguist.pro
+++ b/src/linguist/linguist/linguist.pro
@@ -3,7 +3,7 @@ LANGUAGE = C++
 DESTDIR = $$QT.designer.bins
 
 QT += core-private widgets xml uitools-private
-!isEmpty(QT.printsupport.name): QT += printsupport
+qtHaveModule(printsupport): QT += printsupport
 
 DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII
 !build_pass:contains(QT_CONFIG, build_all): CONFIG += release
diff --git a/src/linguist/linguist/mainwindow.cpp b/src/linguist/linguist/mainwindow.cpp
index ed45265ea4d8d07d1126ca66a7bdce702c3c444c..37abaccad0fb06a5ef0c4f6c32e6e282e572519e 100644
--- a/src/linguist/linguist/mainwindow.cpp
+++ b/src/linguist/linguist/mainwindow.cpp
@@ -1341,7 +1341,7 @@ void MainWindow::manual()
     str << QLatin1String("SetSource qthelp://org.qt-project.linguist.")
         << (QT_VERSION >> 16) << ((QT_VERSION >> 8) & 0xFF)
         << (QT_VERSION & 0xFF)
-        << QLatin1String("/linguist/qtlinguist-index.html")
+        << QLatin1String("/qtlinguist/qtlinguist-index.html")
         << QLatin1Char('\n') << endl;
 }
 
diff --git a/src/linguist/lupdate/lupdate.pro b/src/linguist/lupdate/lupdate.pro
index b9782e913cdbdfe166a2393c90daf4a903d85d5f..ee42568783c217a5e1a51e51d30d78f187cbd655 100644
--- a/src/linguist/lupdate/lupdate.pro
+++ b/src/linguist/lupdate/lupdate.pro
@@ -1,6 +1,6 @@
 QT = core-private
 
-!isEmpty(QT.qmldevtools.name) {
+qtHaveModule(qmldevtools) {
     QT += qmldevtools-private
 } else {
     DEFINES += QT_NO_QML
@@ -20,7 +20,7 @@ SOURCES += \
     java.cpp \
     ui.cpp
 
-!isEmpty(QT.qmldevtools.name): SOURCES += qdeclarative.cpp
+qtHaveModule(qmldevtools): SOURCES += qdeclarative.cpp
 
 HEADERS += \
     lupdate.h \
diff --git a/src/qdbus/qdbus.pro b/src/qdbus/qdbus.pro
index aeb1c96be5f947467bbaf4bc96738c0af924ca03..df1f34f28877fe360a4d1a5c48ce4643af2ea39d 100644
--- a/src/qdbus/qdbus.pro
+++ b/src/qdbus/qdbus.pro
@@ -1,3 +1,3 @@
 TEMPLATE = subdirs
 SUBDIRS = qdbus
-!isEmpty(QT.widgets.name): SUBDIRS += qdbusviewer
+qtHaveModule(widgets): SUBDIRS += qdbusviewer
diff --git a/src/qdbus/qdbusviewer/qdbusviewer.cpp b/src/qdbus/qdbusviewer/qdbusviewer.cpp
index 1d6429a5973eec38d5268c84bf4d069cd7398c0a..c6d8f1faa57fb96943b027164f352667a5814fd0 100644
--- a/src/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/src/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -294,9 +294,17 @@ void QDBusViewer::callMethod(const BusSignature &sig)
         args = dialog.values();
     }
 
-    // Special case - convert a value to a QDBusVariant if the
-    // interface wants a variant
+    // Try to convert the values we got as closely as possible to the
+    // dbus signature. This is especially important for those input as strings
     for (int i = 0; i < args.count(); ++i) {
+        QVariant a = args.at(i);
+        int desttype = types.at(i);
+        if (desttype < int(QMetaType::User) && desttype != int(QVariant::Map)
+            && a.canConvert(desttype)) {
+            args[i].convert(desttype);
+        }
+        // Special case - convert a value to a QDBusVariant if the
+        // interface wants a variant
         if (types.at(i) == qMetaTypeId<QDBusVariant>())
             args[i] = QVariant::fromValue(QDBusVariant(args.at(i)));
     }
diff --git a/src/src.pro b/src/src.pro
index c21cf2ef5aecff62fb84303b11ce2238f042e62d..37995679f83184c79337dfa6d96b50f1c3f93d4c 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -1,7 +1,7 @@
 TEMPLATE = subdirs
 CONFIG += ordered
 
-!isEmpty(QT.widgets.name) {
+qtHaveModule(widgets) {
     no-png {
         message("Some graphics-related tools are unavailable without PNG support")
     } else {
@@ -21,7 +21,7 @@ mac {
 
 embedded:SUBDIRS += kmap2qmap
 
-contains(QT_CONFIG, dbus):SUBDIRS += qdbus
+qtHaveModule(dbus): SUBDIRS += qdbus
 # We don't need these command line utilities on embedded platforms.
 embedded: SUBDIRS += makeqpf
 
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 88b2cd1af9d0a7d282deb8617763932799f42452..074aa34e6de5544d99779ec4d69f4bf737ff4224 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -13,7 +13,7 @@ SUBDIRS=\
 cross_compile:SUBDIRS -= host.pro
 
 # These tests need the QtHelp module
-isEmpty(QT.help.name): SUBDIRS -= \
+!qtHaveModule(help): SUBDIRS -= \
     qhelpcontentmodel \
     qhelpenginecore \
     qhelpgenerator \