Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 87300)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 87301)
@@ -899,4 +899,5 @@
 	src/widgets/UIStatusBarEditorWindow.h \
 	src/widgets/UISearchLineEdit.h \
+	src/widgets/UIToolBox.h \
 	src/widgets/UIWarningPane.h \
 	src/wizards/UIWizard.h \
@@ -1016,5 +1017,6 @@
 	src/widgets/UIFilmContainer.cpp \
 	src/widgets/UIPortForwardingTable.cpp \
-	src/widgets/UIStatusBarEditorWindow.cpp
+	src/widgets/UIStatusBarEditorWindow.cpp \
+	src/widgets/UIToolBox.cpp
 
 ifdef VBOX_GUI_WITH_NETWORK_MANAGER
@@ -1429,4 +1431,5 @@
 	src/widgets/UISpecialControls.cpp \
 	src/widgets/UIStatusBarEditorWindow.cpp \
+	src/widgets/UIToolBox.cpp \
 	src/widgets/UIWarningPane.cpp \
 	src/wizards/UIWizard.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.cpp	(revision 87301)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.cpp	(revision 87301)
@@ -0,0 +1,289 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIToolBox class implementation.
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+/* Qt includes: */
+#include <QLabel>
+#include <QStyle>
+#include <QVBoxLayout>
+
+/* GUI includes: */
+#include "QIRichTextLabel.h"
+#include "QIToolButton.h"
+#include "UICommon.h"
+#include "UIIconPool.h"
+#include "UIToolBox.h"
+#include "UIWizardNewVM.h"
+
+class UITest : public QWidget
+{
+    Q_OBJECT;
+public:
+    UITest(QWidget *pParent = 0)
+        :QWidget(pParent)
+    {}
+    ~UITest(){}
+};
+
+/*********************************************************************************************************************************
+*   UIToolTitleWidget definition.                                                                                    *
+*********************************************************************************************************************************/
+
+class UIToolBoxTitleWidget : public QWidget
+{
+
+    Q_OBJECT;
+
+signals:
+
+    void sigShowPageWidget();
+
+public:
+
+    UIToolBoxTitleWidget(QWidget *pParent = 0);
+    void setText(const QString &strText);
+
+private:
+
+    void prepare();
+    QHBoxLayout *m_pLayout;
+    QLabel      *m_pTitleLabel;
+};
+
+/*********************************************************************************************************************************
+*   UIToolBoxPage definition.                                                                                    *
+*********************************************************************************************************************************/
+
+class UIToolBoxPage : public QWidget
+{
+
+    Q_OBJECT;
+
+signals:
+
+    void sigShowPageWidget();
+
+public:
+
+    UIToolBoxPage(QWidget *pParent = 0);
+    void setTitle(const QString &strTitle);
+    /* @p pWidget's ownership is transferred to the page. */
+    void setWidget(QWidget *pWidget);
+    void setTitleBackgroundColor(const QColor &color);
+    void setPageWidgetVisible(bool fVisible);
+    int index() const;
+    void setIndex(int iIndex);
+
+protected:
+
+    virtual bool eventFilter(QObject *pWatched, QEvent *pEvent) /* override */;
+
+private:
+
+    void prepare();
+    QVBoxLayout *m_pLayout;
+    UIToolBoxTitleWidget      *m_pTitleWidget;
+    QWidget     *m_pWidget;
+    int          m_iIndex;
+};
+
+/*********************************************************************************************************************************
+*   UIToolTitleWidget implementation.                                                                                    *
+*********************************************************************************************************************************/
+
+UIToolBoxTitleWidget::UIToolBoxTitleWidget(QWidget *pParent /* = 0 */)
+    :QWidget(pParent)
+{
+    prepare();
+}
+
+void UIToolBoxTitleWidget::setText(const QString &strText)
+{
+    if (m_pTitleLabel)
+        m_pTitleLabel->setText(strText);
+}
+
+void UIToolBoxTitleWidget::prepare()
+{
+    m_pLayout = new QHBoxLayout(this);
+    m_pLayout->setContentsMargins(1.f * qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin),
+                                  .4f * qApp->style()->pixelMetric(QStyle::PM_LayoutTopMargin),
+                                  1.f * qApp->style()->pixelMetric(QStyle::PM_LayoutRightMargin),
+                                  .4f * qApp->style()->pixelMetric(QStyle::PM_LayoutRightMargin));
+
+    m_pTitleLabel = new QLabel;
+    m_pLayout->addWidget(m_pTitleLabel);
+}
+
+/*********************************************************************************************************************************
+*   UIToolBoxPage implementation.                                                                                    *
+*********************************************************************************************************************************/
+
+UIToolBoxPage::UIToolBoxPage(QWidget *pParent /* = 0 */)
+    :QWidget(pParent)
+    , m_pLayout(0)
+    , m_pTitleWidget(0)
+    , m_pWidget(0)
+    , m_iIndex(0)
+
+{
+    prepare();
+}
+
+void UIToolBoxPage::setTitle(const QString &strTitle)
+{
+    if (!m_pTitleWidget)
+        return;
+    m_pTitleWidget->setText(strTitle);
+}
+
+void UIToolBoxPage::prepare()
+{
+    m_pLayout = new QVBoxLayout(this);
+    m_pLayout->setContentsMargins(0, 0, 0, 0);
+    m_pTitleWidget = new UIToolBoxTitleWidget;
+    m_pTitleWidget->installEventFilter(this);
+    m_pLayout->addWidget(m_pTitleWidget);
+}
+
+void UIToolBoxPage::setWidget(QWidget *pWidget)
+{
+    if (!m_pLayout || !pWidget)
+        return;
+    m_pWidget = pWidget;
+    m_pLayout->addWidget(m_pWidget);
+    m_pWidget->hide();
+}
+
+void UIToolBoxPage::setTitleBackgroundColor(const QColor &color)
+{
+    if (!m_pTitleWidget)
+        return;
+    QPalette palette = m_pTitleWidget->palette();
+    palette.setColor(QPalette::Window, color);
+    m_pTitleWidget->setPalette(palette);
+    m_pTitleWidget->setAutoFillBackground(true);
+}
+
+void UIToolBoxPage::setPageWidgetVisible(bool fVisible)
+{
+    if (m_pWidget)
+        m_pWidget->setVisible(fVisible);
+}
+
+int UIToolBoxPage::index() const
+{
+    return m_iIndex;
+}
+
+void UIToolBoxPage::setIndex(int iIndex)
+{
+    m_iIndex = iIndex;
+}
+
+bool UIToolBoxPage::eventFilter(QObject *pWatched, QEvent *pEvent)
+{
+    if (pWatched == m_pTitleWidget && pEvent->type() == QEvent::MouseButtonPress)
+        emit sigShowPageWidget();
+    return QWidget::eventFilter(pWatched, pEvent);
+
+}
+
+/*********************************************************************************************************************************
+*   UIToolBox implementation.                                                                                    *
+*********************************************************************************************************************************/
+
+UIToolBox::UIToolBox(QWidget *pParent /*  = 0 */)
+    : QIWithRetranslateUI<QFrame>(pParent)
+{
+    prepare();
+}
+
+bool UIToolBox::insertItem(int iIndex, QWidget *pWidget, const QString &strTitle)
+{
+    if (m_pages.contains(iIndex))
+        return false;
+    UIToolBoxPage *pNewPage = new UIToolBoxPage;
+
+    pNewPage->setWidget(pWidget);
+    pNewPage->setIndex(iIndex);
+    pNewPage->setTitle(strTitle);
+
+    const QPalette pal = palette();
+    QColor tabBackgroundColor = pal.color(QPalette::Active, QPalette::Highlight).lighter(110);
+    pNewPage->setTitleBackgroundColor(tabBackgroundColor);
+
+    m_pages[iIndex] = pNewPage;
+    m_pMainLayout->insertWidget(iIndex, pNewPage);
+
+    connect(pNewPage, &UIToolBoxPage::sigShowPageWidget,
+            this, &UIToolBox::sltHandleShowPageWidget);
+
+    return iIndex;
+}
+
+void UIToolBox::setItemEnabled(int iIndex, bool fEnabled)
+{
+    Q_UNUSED(fEnabled);
+    Q_UNUSED(iIndex);
+}
+
+void UIToolBox::setItemText(int iIndex, const QString &strTitle)
+{
+    QMap<int, UIToolBoxPage*>::iterator iterator = m_pages.find(iIndex);
+    if (iterator == m_pages.end())
+        return;
+    iterator.value()->setTitle(strTitle);
+}
+
+void UIToolBox::setItemIcon(int iIndex, const QIcon &icon)
+{
+    Q_UNUSED(iIndex);
+    Q_UNUSED(icon);
+}
+
+void UIToolBox::setPageVisible(int iIndex)
+{
+    QMap<int, UIToolBoxPage*>::iterator iterator = m_pages.find(iIndex);
+    if (iterator == m_pages.end())
+        return;
+    foreach(UIToolBoxPage *pPage, m_pages)
+        pPage->setPageWidgetVisible(false);
+
+    iterator.value()->setPageWidgetVisible(true);
+}
+
+void UIToolBox::retranslateUi()
+{
+}
+
+void UIToolBox::prepare()
+{
+    m_pMainLayout = new QVBoxLayout(this);
+    //m_pMainLayout->setContentsMargins(0, 0, 0, 0);
+
+    retranslateUi();
+}
+
+void UIToolBox::sltHandleShowPageWidget()
+{
+    UIToolBoxPage *pPage = qobject_cast<UIToolBoxPage*>(sender());
+    if (!pPage)
+        return;
+    setPageVisible(pPage->index());
+}
+
+#include "UIToolBox.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.h	(revision 87301)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.h	(revision 87301)
@@ -0,0 +1,69 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIToolBox class declaration.
+ */
+
+/*
+ * Copyright (C) 2006-2020 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef FEQT_INCLUDED_SRC_widgets_UIToolBox_h
+#define FEQT_INCLUDED_SRC_widgets_UIToolBox_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Qt includes: */
+#include <QFrame>
+#include <QMap>
+
+/* Local includes: */
+#include "QIWithRetranslateUI.h"
+
+/* Forward declarations: */
+class QVBoxLayout;
+class QLabel;
+class UIToolBoxPage;
+
+class  SHARED_LIBRARY_STUFF UIToolBox : public QIWithRetranslateUI<QFrame>
+{
+
+    Q_OBJECT;
+
+signals:
+
+
+public:
+
+    UIToolBox(QWidget *pParent = 0);
+    bool insertItem(int iIndex, QWidget *pWidget, const QString &strTitle);
+    void setItemEnabled(int iIndex, bool fEnabled);
+    void setItemText(int iIndex, const QString &strTitle);
+    void setItemIcon(int iIndex, const QIcon &icon);
+    void setPageVisible(int iIndex);
+
+protected:
+
+    void retranslateUi();
+
+private slots:
+
+    void sltHandleShowPageWidget();
+
+private:
+
+    void prepare();
+
+    QVBoxLayout *m_pMainLayout;
+    QMap<int, UIToolBoxPage*> m_pages;
+};
+
+#endif /* !FEQT_INCLUDED_SRC_widgets_UIToolBox_h */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 87300)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 87301)
@@ -25,5 +25,4 @@
 #include <QSpacerItem>
 #include <QSpinBox>
-#include <QToolBox>
 #include <QVBoxLayout>
 
@@ -37,4 +36,5 @@
 #include "UIMedium.h"
 #include "UINameAndSystemEditor.h"
+#include "UIToolBox.h"
 #include "UIUserNamePasswordEditor.h"
 #include "UIWizardNewVM.h"
@@ -49,5 +49,5 @@
     QVBoxLayout *pMainLayout = new QVBoxLayout(this);
     {
-        m_pToolBox = new QToolBox;
+        m_pToolBox = new UIToolBox;
         m_pToolBox->insertItem(ExpertToolboxItems_NameAndOSType, createNameOSTypeWidgets(/* fIncreaseLeftIndent */ true,
                                                                                          /* fCreateLabels */ false), "");
@@ -57,5 +57,8 @@
         m_pToolBox->insertItem(ExpertToolboxItems_GAInstall, createGAInstallWidgets(/* fIncreaseLeftIndent */ true), "");
         m_pToolBox->insertItem(ExpertToolboxItems_ProductKey, createProductKeyWidgets(/* fIncreaseLeftIndent */ true), "");
+
+        m_pToolBox->setPageVisible(ExpertToolboxItems_NameAndOSType);
         pMainLayout->addWidget(m_pToolBox);
+
 
         pMainLayout->addStretch();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 87300)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 87301)
@@ -28,5 +28,5 @@
 
 /* Forward declarations: */
-class QToolBox;
+class UIToolBox;
 
 /** Expert page of the New Virtual Machine wizard. */
@@ -111,5 +111,5 @@
     void markWidgets() const;
 
-    QToolBox  *m_pToolBox;
+    UIToolBox  *m_pToolBox;
 };
 
