diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp
index 5fd7dda48625f15af5295397276d7f13c64b17a1..b5cbd7fa0009fff3387fb851527d64627ef0f7aa 100644
--- a/src/plugins/perforce/settingspage.cpp
+++ b/src/plugins/perforce/settingspage.cpp
@@ -39,18 +39,20 @@
 #include <QtGui/QFileDialog>
 
 using namespace Perforce::Internal;
+using namespace Core::Utils;
 
 SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
     QWidget(parent)
 {
     m_ui.setupUi(this);
-    connect(m_ui.browseButton, SIGNAL(clicked()), this, SLOT(browseForCommand()));
+    m_ui.pathChooser->setPromptDialogTitle(tr("Perforce Command"));
+    m_ui.pathChooser->setExpectedKind(PathChooser::Command);
 }
 
 PerforceSettings SettingsPageWidget::settings() const
 {
     PerforceSettings rc;
-    rc.p4Command = m_ui.p4CmdLineEdit->text();
+    rc.p4Command = m_ui.pathChooser->path();
     rc.defaultEnv = m_ui.defaultCheckBox->isChecked();
     rc.p4Port = m_ui.portLineEdit->text();
     rc.p4Client = m_ui.clientLineEdit->text();
@@ -60,21 +62,13 @@ PerforceSettings SettingsPageWidget::settings() const
 
 void SettingsPageWidget::setSettings(const PerforceSettings &s)
 {
-    m_ui.p4CmdLineEdit->setText(s.p4Command);
+    m_ui.pathChooser->setPath(s.p4Command);
     m_ui.defaultCheckBox->setChecked(s.defaultEnv);
     m_ui.portLineEdit->setText(s.p4Port);
     m_ui.clientLineEdit->setText(s.p4Client);
     m_ui.userLineEdit->setText(s.p4User);
 }
 
-void SettingsPageWidget::browseForCommand()
-{
-    const QString cmd = QFileDialog::getOpenFileName(window(), tr("Perforce Command"));
-    if (!cmd.isEmpty())
-        m_ui.p4CmdLineEdit->setText(cmd);
-}
-
-
 SettingsPage::SettingsPage()
 {
 }
diff --git a/src/plugins/perforce/settingspage.h b/src/plugins/perforce/settingspage.h
index f73a205e112b0644340eb0df34f731f3e72ae574..23e968125736822484b83339158811842e043a7b 100644
--- a/src/plugins/perforce/settingspage.h
+++ b/src/plugins/perforce/settingspage.h
@@ -54,9 +54,6 @@ public:
     PerforceSettings settings() const;
     void setSettings(const PerforceSettings &);
 
-private slots:;
-    void browseForCommand();
-
 private:
     Ui::SettingsPage m_ui;
 };
diff --git a/src/plugins/perforce/settingspage.ui b/src/plugins/perforce/settingspage.ui
index 1379b7b6666dc1f8cd4a2e3490c9a1b2fd1fc687..b2d6bf10e354968de9496a1de57e628aadb22733 100644
--- a/src/plugins/perforce/settingspage.ui
+++ b/src/plugins/perforce/settingspage.ui
@@ -36,14 +36,7 @@
       </widget>
      </item>
      <item>
-      <widget class="QLineEdit" name="p4CmdLineEdit"/>
-     </item>
-     <item>
-      <widget class="QToolButton" name="browseButton">
-       <property name="text">
-        <string>...</string>
-       </property>
-      </widget>
+      <widget class="Core::Utils::PathChooser" name="pathChooser" native="true"/>
      </item>
     </layout>
    </item>
@@ -120,11 +113,18 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>Core::Utils::PathChooser</class>
+   <extends>QWidget</extends>
+   <header location="global">utils/pathchooser.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <tabstops>
   <tabstop>portLineEdit</tabstop>
   <tabstop>clientLineEdit</tabstop>
   <tabstop>userLineEdit</tabstop>
-  <tabstop>p4CmdLineEdit</tabstop>
  </tabstops>
  <resources/>
  <connections>