diff --git a/src/gui/kernel/qplatformdialoghelper.cpp b/src/gui/kernel/qplatformdialoghelper.cpp
index 20dc716d8964ecbd7daed47eb9c8321afc614edc..f69efe09354eec07bf8434778c899d221b0ff401 100644
--- a/src/gui/kernel/qplatformdialoghelper.cpp
+++ b/src/gui/kernel/qplatformdialoghelper.cpp
@@ -119,6 +119,8 @@ static const int buttonRoleLayouts[2][5][14] =
 
 QPlatformDialogHelper::QPlatformDialogHelper()
 {
+    qRegisterMetaType<StandardButton>();
+    qRegisterMetaType<ButtonRole>();
 }
 
 QPlatformDialogHelper::~QPlatformDialogHelper()
diff --git a/src/gui/kernel/qplatformdialoghelper.h b/src/gui/kernel/qplatformdialoghelper.h
index ec88770862a964c270e331290dcda34221be5054..936dbdfa89911a5e994f40910dd04506dd6811c6 100644
--- a/src/gui/kernel/qplatformdialoghelper.h
+++ b/src/gui/kernel/qplatformdialoghelper.h
@@ -160,6 +160,11 @@ Q_SIGNALS:
     void reject();
 };
 
+QT_END_NAMESPACE
+Q_DECLARE_METATYPE(QPlatformDialogHelper::StandardButton)
+Q_DECLARE_METATYPE(QPlatformDialogHelper::ButtonRole)
+QT_BEGIN_NAMESPACE
+
 class Q_GUI_EXPORT QColorDialogOptions
 {
 public: