Index: src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision 8b6e4be14704ec574d4c4c1072c3d6a842d49154)
+++ src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py	(revision b14db78156edc3c8686cfa4ff430967b3ff72a1f)
@@ -33,4 +33,5 @@
 SMEARING_1D = ["Custom Pinhole Smear", "Custom Slit Smear"]
 SMEARING_2D = ["Custom Pinhole Smear"]
+SMEARING_QD = "Use dQ Data"
 
 MODEL = [
@@ -62,5 +63,8 @@
         self.current_smearer = None
         self.kernel_model = None
-
+        # dQ data variables
+        smear_type = None
+        dq_l = None
+        dq_r = None
         # Let only floats in the line edits
         self.txtSmearDown.setValidator(GuiUtils.DoubleValidator())
@@ -117,4 +121,6 @@
         """
         self.kernel_model = kernel_model
+        self.cbSmearing.clear()
+        self.cbSmearing.addItem("None")
         if self.data is None:
             self.setElementsVisibility(False)
@@ -122,5 +128,9 @@
         if self.kernel_model is None:
             return
-        elif isinstance(self.data, Data1D):
+        # Find out if data has dQ
+        (self.smear_type, self.dq_l, self.dq_r) = self.getSmearInfo()
+        if self.smear_type is not None:
+            self.cbSmearing.addItem(SMEARING_QD)
+        if isinstance(self.data, Data1D):
             self.cbSmearing.addItems(SMEARING_1D)
         else:
@@ -136,12 +146,20 @@
         Callback for smearing combobox index change
         """
-        if index == 0:
+        text = self.cbSmearing.currentText()
+        if text == 'None':
             self.setElementsVisibility(False)
             self.current_smearer = None
-        elif index == 1:
+        elif text == "Use dQ Data":
+            self.setElementsVisibility(True)
+            self.setDQLabels()
+            if self.smear_type == "Pinhole":
+                self.onPinholeSmear()
+            else:
+                self.onSlitSmear()
+        elif text == "Custom Pinhole Smear":
             self.setElementsVisibility(True)
             self.setPinholeLabels()
             self.onPinholeSmear()
-        elif index == 2:
+        elif text == "Custom Slit Smear":
             self.setElementsVisibility(True)
             self.setSlitLabels()
@@ -192,4 +210,8 @@
             self.lblSmearUp.setText('<html><head/><body><p>dQ<span style=" vertical-align:sub;">%</span></p></body></html>')
             self.lblUnitUp.setText('%')
+        self.txtSmearDown.setEnabled(True)
+        self.txtSmearUp.setEnabled(True)
+        self.txtSmearDown.setText(str(0.0))
+        self.txtSmearUp.setText(str(0.0))
 
     def setSlitLabels(self):
@@ -203,4 +225,27 @@
         self.lblUnitDown.setText('<html><head/><body><p>Ã
 <span style=" vertical-align:super;">-1</span></p></body></html>')
+        self.txtSmearDown.setEnabled(True)
+        self.txtSmearUp.setEnabled(True)
+        self.txtSmearDown.setText(str(0.0))
+        self.txtSmearUp.setText(str(0.0))
+
+    def setDQLabels(self):
+        """
+        Use pinhole labels
+        """
+        if self.smear_type == "Pinhole":
+            self.lblSmearDown.setText('<html><head/><body><p>dQ<span style=" vertical-align:sub;">high</span></p></body></html>')
+            self.lblSmearUp.setText('<html><head/><body><p>dQ<span style=" vertical-align:sub;">low</span></p></body></html>')
+        else:
+            self.lblSmearUp.setText('<dQp>')
+            self.lblSmearDown.setText('<dQs>')
+        self.lblUnitUp.setText('<html><head/><body><p>Ã
+<span style=" vertical-align:super;">-1</span></p></body></html>')
+        self.lblUnitDown.setText('<html><head/><body><p>Ã
+<span style=" vertical-align:super;">-1</span></p></body></html>')
+        self.txtSmearDown.setText(str(self.dq_r))
+        self.txtSmearUp.setText(str(self.dq_l))
+        self.txtSmearDown.setEnabled(False)
+        self.txtSmearUp.setEnabled(False)
 
     def state(self):
@@ -306,2 +351,44 @@
 
         self.current_smearer = smear_selection(data, self.kernel_model)
+
+    def getSmearInfo(self):
+        """
+        Get the smear info from data.
+
+        :return: self.smear_type, self.dq_l and self.dq_r,
+            respectively the type of the smear, dq_min and
+            dq_max for pinhole smear data
+            while dxl and dxw for slit smear
+        """
+        # default
+        smear_type = None
+        dq_l = None
+        dq_r = None
+        data = self.data
+        if self.data is None:
+            return smear_type, dq_l, dq_r
+        elif isinstance(data, Data2D):
+            if data.dqx_data is None or data.dqy_data is None:
+                return smear_type, dq_l, dq_r
+            elif data.dqx_data.any() != 0 and data.dqx_data.any() != 0:
+                smear_type = "Pinhole2d"
+                dq_l = GuiUtils.formatNumber(np.average(data.dqx_data))
+                dq_r = GuiUtils.formatNumber(np.average(data.dqy_data))
+                return smear_type, dq_l, dq_r
+            else:
+                return smear_type, dq_l, dq_r
+        # check if it is pinhole smear and get min max if it is.
+        if data.dx is not None and np.any(data.dx):
+            smear_type = "Pinhole"
+            dq_l = data.dx[0]
+            dq_r = data.dx[-1]
+
+        # check if it is slit smear and get min max if it is.
+        elif data.dxl is not None or data.dxw is not None:
+            smear_type = "Slit"
+            if data.dxl is not None and np.all(data.dxl, 0):
+                dq_l = data.dxl[0]
+            if data.dxw is not None and np.all(data.dxw, 0):
+                dq_r = data.dxw[0]
+
+        return smear_type, dq_l, dq_r
