diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index d576239768672237efd91ca25034e6d220fa6d99..76f5bd808c7191df16b9bf3cacbc4d90af9de3cd 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -415,6 +415,7 @@ void QbsBuildStepConfigWidget::updateState()
 
     if (m_step->isQmlDebuggingEnabled())
         command += QLatin1String(" Qt.declarative.qmlDebugging:true Qt.quick.qmlDebugging:true");
+    m_ui->commandLineTextEdit->setPlainText(command);
 
     QString summary = tr("<b>Qbs:</b> %1").arg(command);
     if (m_summary != summary) {
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui b/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui
index 0533f059ec24a1d5b85f5760420a89ffdf14a6e3..4045cedd36a9c59a39b1a3c6e1d535e4f369c024 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui
+++ b/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui
@@ -6,23 +6,11 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>463</width>
-    <height>121</height>
+    <width>557</width>
+    <height>233</height>
    </rect>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <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 class="QFormLayout" name="formLayout">
    <item row="0" column="0">
     <widget class="QLabel" name="buildVariantLabel">
      <property name="text">
@@ -31,56 +19,77 @@
     </widget>
    </item>
    <item row="0" column="1">
-    <widget class="QComboBox" name="buildVariantComboBox">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
+    <layout class="QHBoxLayout" name="horizontalLayout_5">
      <item>
-      <property name="text">
-       <string>Debug</string>
-      </property>
+      <widget class="QComboBox" name="buildVariantComboBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <item>
+        <property name="text">
+         <string>Debug</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>Release</string>
+        </property>
+       </item>
+      </widget>
      </item>
      <item>
-      <property name="text">
-       <string>Release</string>
-      </property>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>70</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
      </item>
-    </widget>
-   </item>
-   <item row="0" column="2">
-    <widget class="QSpinBox" name="jobSpinBox"/>
+    </layout>
    </item>
-   <item row="0" column="3">
+   <item row="1" column="0">
     <widget class="QLabel" name="jobsLabel">
      <property name="text">
-      <string>jobs</string>
+      <string>Parallel Jobs:</string>
      </property>
     </widget>
    </item>
-   <item row="0" column="4">
-    <spacer name="spacer">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>15</width>
-       <height>5</height>
-      </size>
-     </property>
-    </spacer>
+   <item row="1" column="1">
+    <layout class="QHBoxLayout" name="horizontalLayout_6">
+     <item>
+      <widget class="QSpinBox" name="jobSpinBox"/>
+     </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">
+   <item row="2" column="0">
     <widget class="QLabel" name="qmlDebuggingLabel">
      <property name="text">
       <string>Enable QML debugging:</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="1" colspan="4">
+   <item row="2" column="1">
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QCheckBox" name="qmlDebuggingLibraryCheckBox">
@@ -121,17 +130,28 @@
      </item>
     </layout>
    </item>
-   <item row="2" column="0">
+   <item row="3" column="0">
     <widget class="QLabel" name="propertyLabel">
      <property name="text">
       <string>Properties:</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1" colspan="4">
-    <widget class="QbsPropertyLineEdit" name="propertyEdit"/>
+   <item row="3" column="1">
+    <widget class="QbsPropertyLineEdit" name="propertyEdit">
+     <property name="text">
+      <string notr="true"/>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
+    <widget class="QLabel" name="flagsLabel">
+     <property name="text">
+      <string>Flags:</string>
+     </property>
+    </widget>
    </item>
-   <item row="3" column="0" colspan="5">
+   <item row="4" column="1">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QCheckBox" name="dryRunCheckBox">
@@ -162,7 +182,43 @@
      </item>
     </layout>
    </item>
+   <item row="5" column="0">
+    <widget class="QLabel" name="commandLineKeyLabel">
+     <property name="text">
+      <string>Equivalent command line:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1">
+    <widget class="QPlainTextEdit" name="commandLineTextEdit">
+     <property name="undoRedoEnabled">
+      <bool>false</bool>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+     <property name="plainText">
+      <string notr="true"/>
+     </property>
+     <property name="textInteractionFlags">
+      <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+     </property>
+    </widget>
+   </item>
   </layout>
+  <zorder>buildVariantLabel</zorder>
+  <zorder>qmlDebuggingLabel</zorder>
+  <zorder>propertyLabel</zorder>
+  <zorder>propertyEdit</zorder>
+  <zorder></zorder>
+  <zorder></zorder>
+  <zorder>commandLineKeyLabel</zorder>
+  <zorder>flagsLabel</zorder>
+  <zorder>jobsLabel</zorder>
+  <zorder>commandLineTextEdit</zorder>
  </widget>
  <customwidgets>
   <customwidget>
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
index c18e5ab7b0b3993eb7188500bb84ba3224506ec1..8403a34117ccc53b08fe661ffd77c096d109ec4b 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
@@ -293,6 +293,7 @@ void QbsCleanStepConfigWidget::updateState()
         command += QLatin1String("--keep-going ");
     if (m_step->cleanAll())
         command += QLatin1String(" --all-artifacts");
+    m_ui->commandLineTextEdit->setPlainText(command);
 
     QString summary = tr("<b>Qbs:</b> %1").arg(command);
     if (m_summary !=  summary) {
diff --git a/src/plugins/qbsprojectmanager/qbscleanstepconfigwidget.ui b/src/plugins/qbsprojectmanager/qbscleanstepconfigwidget.ui
index 2313f6417bd6573ed7d8e96316fccd77d1e2fd19..9b10bb3831810b131bea0742fdf51da81203bf40 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstepconfigwidget.ui
+++ b/src/plugins/qbsprojectmanager/qbscleanstepconfigwidget.ui
@@ -6,58 +6,95 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>376</width>
-    <height>41</height>
+    <width>585</width>
+    <height>140</height>
    </rect>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout">
-   <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="QCheckBox" name="cleanAllCheckBox">
+  <layout class="QFormLayout" name="formLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="flagsLabel">
      <property name="text">
-      <string>Clean all artifacts</string>
+      <string>Flags:</string>
      </property>
     </widget>
    </item>
-   <item>
-    <widget class="QCheckBox" name="dryRunCheckBox">
-     <property name="text">
-      <string>Dry run</string>
-     </property>
-    </widget>
+   <item row="0" column="1">
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QCheckBox" name="cleanAllCheckBox">
+       <property name="text">
+        <string>Clean all artifacts</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="dryRunCheckBox">
+       <property name="text">
+        <string>Dry run</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="keepGoingCheckBox">
+       <property name="text">
+        <string>Keep going</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>58</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
    </item>
-   <item>
-    <widget class="QCheckBox" name="keepGoingCheckBox">
+   <item row="1" column="0">
+    <widget class="QLabel" name="commandLineKeyLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
-      <string>Keep going</string>
+      <string>Equivalent command line:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
      </property>
     </widget>
    </item>
-   <item>
-    <spacer name="horizontalSpacer">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+   <item row="1" column="1">
+    <widget class="QPlainTextEdit" name="commandLineTextEdit">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="undoRedoEnabled">
+      <bool>false</bool>
      </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>58</width>
-       <height>20</height>
-      </size>
+     <property name="readOnly">
+      <bool>true</bool>
      </property>
-    </spacer>
+     <property name="plainText">
+      <string notr="true"/>
+     </property>
+    </widget>
    </item>
   </layout>
+  <zorder>commandLineKeyLabel</zorder>
+  <zorder>flagsLabel</zorder>
+  <zorder>commandLineTextEdit</zorder>
  </widget>
  <resources/>
  <connections/>
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
index 23f45c0781c65ae5a19adc3e54cbedcff2daacfb..57d30690cced1dd3aab9afb96d4843c8b2fcbc36 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp
@@ -318,6 +318,7 @@ void QbsInstallStepConfigWidget::updateState()
     if (m_step->removeFirst())
         command += QLatin1String("--remove-first ");
     command += QString::fromLatin1("--install-root \"%1\"").arg(m_step->absoluteInstallRoot());
+    m_ui->commandLineTextEdit->setPlainText(command);
 
     QString summary = tr("<b>Qbs:</b> %1").arg(command);
     if (m_summary != summary) {
diff --git a/src/plugins/qbsprojectmanager/qbsinstallstepconfigwidget.ui b/src/plugins/qbsprojectmanager/qbsinstallstepconfigwidget.ui
index a7482edbbb2c64f0f2e90556514a76df4090ad86..9a6c4fac874676e6d87902e8ccfa371df3dc0793 100644
--- a/src/plugins/qbsprojectmanager/qbsinstallstepconfigwidget.ui
+++ b/src/plugins/qbsprojectmanager/qbsinstallstepconfigwidget.ui
@@ -6,29 +6,11 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>371</width>
-    <height>60</height>
+    <width>474</width>
+    <height>146</height>
    </rect>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <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>18</number>
-   </property>
+  <layout class="QFormLayout" name="formLayout">
    <item row="0" column="0">
     <widget class="QLabel" name="installRootLabel">
      <property name="text">
@@ -36,7 +18,7 @@
      </property>
     </widget>
    </item>
-   <item row="0" column="1" colspan="2">
+   <item row="0" column="1">
     <widget class="Utils::PathChooser" name="installRootChooser">
      <property name="minimumSize">
       <size>
@@ -47,23 +29,82 @@
     </widget>
    </item>
    <item row="1" column="0">
-    <widget class="QCheckBox" name="removeFirstCheckBox">
+    <widget class="QLabel" name="flagsLabel">
      <property name="text">
-      <string>Remove first</string>
+      <string>Flags:</string>
      </property>
     </widget>
    </item>
    <item row="1" column="1">
-    <widget class="QCheckBox" name="dryRunCheckBox">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QCheckBox" name="dryRunCheckBox">
+       <property name="text">
+        <string>Dry run</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="keepGoingCheckBox">
+       <property name="text">
+        <string>Keep going</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="removeFirstCheckBox">
+       <property name="text">
+        <string>Remove first</string>
+       </property>
+      </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>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="commandLineKeyLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
-      <string>Dry run</string>
+      <string>Equivalent command line:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
      </property>
     </widget>
    </item>
-   <item row="1" column="2">
-    <widget class="QCheckBox" name="keepGoingCheckBox">
-     <property name="text">
-      <string>Keep going</string>
+   <item row="2" column="1">
+    <widget class="QPlainTextEdit" name="commandLineTextEdit">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+     <property name="plainText">
+      <string notr="true"/>
+     </property>
+     <property name="textInteractionFlags">
+      <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
      </property>
     </widget>
    </item>