Index: src/sas/qtgui/Calculators/DataOperationUtilityPanel.py
===================================================================
--- src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
+++ src/sas/qtgui/Calculators/DataOperationUtilityPanel.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -4,6 +4,7 @@
 import copy
 
-from PyQt4 import QtGui
-from PyQt4 import QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from sas.qtgui.Plotting.PlotterData import Data1D
@@ -19,5 +20,5 @@
 
 
-class DataOperationUtilityPanel(QtGui.QDialog, Ui_DataOperationUtility):
+class DataOperationUtilityPanel(QtWidgets.QDialog, Ui_DataOperationUtility):
     def __init__(self, parent=None):
         super(DataOperationUtilityPanel, self).__init__()
@@ -57,7 +58,7 @@
         self.txtNumber.setValidator(QtGui.QDoubleValidator())
 
-        self.layoutOutput = QtGui.QHBoxLayout()
-        self.layoutData1 = QtGui.QHBoxLayout()
-        self.layoutData2 = QtGui.QHBoxLayout()
+        self.layoutOutput = QtWidgets.QHBoxLayout()
+        self.layoutData1 = QtWidgets.QHBoxLayout()
+        self.layoutData2 = QtWidgets.QHBoxLayout()
 
         # Create default layout for initial graphs (when they are still empty)
@@ -383,6 +384,6 @@
     def newPlot(self, graph, layout):
         """ Create template for graphs with default '?' layout"""
-        assert isinstance(graph, QtGui.QGraphicsView)
-        assert isinstance(layout, QtGui.QHBoxLayout)
+        assert isinstance(graph, QtWidgets.QGraphicsView)
+        assert isinstance(layout, QtWidgets.QHBoxLayout)
 
         # clear layout
@@ -399,6 +400,6 @@
         """ plot data in graph after clearing its layout """
 
-        assert isinstance(graph, QtGui.QGraphicsView)
-        assert isinstance(layout, QtGui.QHBoxLayout)
+        assert isinstance(graph, QtWidgets.QGraphicsView)
+        assert isinstance(layout, QtWidgets.QHBoxLayout)
 
         # clear layout
@@ -455,8 +456,8 @@
     def prepareSubgraphWithData(self, data):
         """ Create graphics view containing scene with string """
-        scene = QtGui.QGraphicsScene()
+        scene = QtWidgets.QGraphicsScene()
         scene.addText(str(data))
 
-        subgraph = QtGui.QGraphicsView()
+        subgraph = QtWidgets.QGraphicsView()
         subgraph.setScene(scene)
 
Index: src/sas/qtgui/Calculators/DensityPanel.py
===================================================================
--- src/sas/qtgui/Calculators/DensityPanel.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/DensityPanel.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -2,5 +2,7 @@
 import logging
 import functools
-from PyQt4 import QtGui, QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from periodictable import formula as Formula
@@ -39,5 +41,5 @@
 
 
-class DensityPanel(QtGui.QDialog):
+class DensityPanel(QtWidgets.QDialog):
 
     def __init__(self, parent=None):
@@ -68,6 +70,6 @@
         self.ui.editMassDensity.textEdited.connect(functools.partial(self.setMode, MODES.DENSITY_TO_VOLUME))
 
-        self.ui.buttonBox.button(QtGui.QDialogButtonBox.Reset).clicked.connect(self.modelReset)
-        self.ui.buttonBox.button(QtGui.QDialogButtonBox.Help).clicked.connect(self.displayHelp)
+        self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Reset).clicked.connect(self.modelReset)
+        self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Help).clicked.connect(self.displayHelp)
 
     def setupModel(self):
@@ -83,5 +85,5 @@
 
     def setupMapper(self):
-        self.mapper = QtGui.QDataWidgetMapper(self)
+        self.mapper = QtWidgets.QDataWidgetMapper(self)
         self.mapper.setModel(self.model)
         self.mapper.setOrientation(QtCore.Qt.Vertical)
@@ -92,5 +94,6 @@
         self.mapper.addMapping(self.ui.editMassDensity     , MODEL.MASS_DENSITY)
 
-        self.mapper.toFirst()
+        # FIXME DOESNT WORK WITH QT5
+        #self.mapper.toFirst()
 
     def dataChanged(self, top, bottom):
Index: src/sas/qtgui/Calculators/GenericScatteringCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
+++ src/sas/qtgui/Calculators/GenericScatteringCalculator.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -5,6 +5,8 @@
 import time
 
-from PyQt4 import QtGui
-from PyQt4 import QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
+
 from twisted.internet import threads
 
@@ -27,5 +29,5 @@
 
 
-class GenericScatteringCalculator(QtGui.QDialog, Ui_GenericScatteringCalculator):
+class GenericScatteringCalculator(QtWidgets.QDialog, Ui_GenericScatteringCalculator):
 
     trigger_plot_3d = QtCore.pyqtSignal()
@@ -129,5 +131,5 @@
         """
         try:
-            self.datafile = QtGui.QFileDialog.getOpenFileName(
+            self.datafile = QtWidgets.QFileDialog.getOpenFileName(
                 self, "Choose a file", "", "All Gen files (*.OMF *.omf) ;;"
                                           "SLD files (*.SLD *.sld);;PDB files (*.pdb *.PDB);; "
@@ -607,7 +609,7 @@
             'directory': default_name,
             'filter': 'SLD file (*.sld)',
-            'options': QtGui.QFileDialog.DontUseNativeDialog}
+            'options': QtWidgets.QFileDialog.DontUseNativeDialog}
         # Query user for filename.
-        filename = str(QtGui.QFileDialog.getSaveFileName(**kwargs))
+        filename = str(QtWidgets.QFileDialog.getSaveFileName(**kwargs))
         if filename:
             try:
@@ -830,8 +832,8 @@
 
 
-class Plotter3D(QtGui.QDialog, Plotter3DWidget):
+class Plotter3D(QtWidgets.QDialog, Plotter3DWidget):
     def __init__(self, parent=None, graph_title=''):
         self.graph_title = graph_title
-        QtGui.QDialog.__init__(self)
+        QtWidgets.QDialog.__init__(self)
         Plotter3DWidget.__init__(self, manager=parent)
         self.setWindowTitle(self.graph_title)
Index: src/sas/qtgui/Calculators/KiessigPanel.py
===================================================================
--- src/sas/qtgui/Calculators/KiessigPanel.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
+++ src/sas/qtgui/Calculators/KiessigPanel.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -1,4 +1,5 @@
-from PyQt4 import QtGui
-from PyQt4 import QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from sas.qtgui.UI import main_resources_rc
@@ -10,5 +11,5 @@
 
 
-class KiessigPanel(QtGui.QDialog, Ui_KiessigPanel):
+class KiessigPanel(QtWidgets.QDialog, Ui_KiessigPanel):
     def __init__(self, parent=None):
         super(KiessigPanel, self).__init__()
Index: src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py
===================================================================
--- src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
+++ src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -4,6 +4,7 @@
 instrumental parameters.
 """
-from PyQt4 import QtGui
-from PyQt4 import QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from twisted.internet import threads
@@ -33,5 +34,5 @@
 
 
-class ResolutionCalculatorPanel(QtGui.QDialog, Ui_ResolutionCalculatorPanel):
+class ResolutionCalculatorPanel(QtWidgets.QDialog, Ui_ResolutionCalculatorPanel):
     """
     compute resolution in 2D
@@ -315,8 +316,8 @@
         """ On Spectrum Combobox event"""
         if self.cbCustomSpectrum.currentText() == 'Add New':
-            datafile = QtGui.QFileDialog.getOpenFileName(
+            datafile = QtWidgets.QFileDialog.getOpenFileName(
                 self, "Choose a spectral distribution file", "",
                 "All files (*.*)",
-                QtGui.QFileDialog.DontUseNativeDialog)
+                QtWidgets.QFileDialog.DontUseNativeDialog)
 
             if datafile is None or str(datafile) == '':
@@ -721,5 +722,5 @@
         self.plotter.scale = 'linear'
         self.plotter.cmap = None
-        layout = QtGui.QHBoxLayout()
+        layout = QtWidgets.QHBoxLayout()
         layout.setContentsMargins(0, 0, 0, 0)
         self.graphicsView.setLayout(layout)
Index: src/sas/qtgui/Calculators/SldPanel.py
===================================================================
--- src/sas/qtgui/Calculators/SldPanel.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
+++ src/sas/qtgui/Calculators/SldPanel.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -1,5 +1,7 @@
 # global
 import logging
-from PyQt4 import QtGui, QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from periodictable import formula as Formula
@@ -97,5 +99,5 @@
 
 
-class SldPanel(QtGui.QDialog):
+class SldPanel(QtWidgets.QDialog):
 
     def __init__(self, parent=None):
@@ -133,6 +135,6 @@
 
         # signals
-        self.ui.buttonBox.button(QtGui.QDialogButtonBox.Reset).clicked.connect(self.modelReset)
-        self.ui.buttonBox.button(QtGui.QDialogButtonBox.Help).clicked.connect(self.displayHelp)
+        self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Reset).clicked.connect(self.modelReset)
+        self.ui.buttonBox.button(QtWidgets.QDialogButtonBox.Help).clicked.connect(self.displayHelp)
 
     def setupModel(self):
@@ -145,16 +147,16 @@
             self.model.setItem(key, QtGui.QStandardItem())
 
-        QtCore.QObject.connect(
-            self.model,
-            QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"),
-            self.dataChanged)
+        self.model.dataChanged.connect(self.dataChanged)
+        #QtCore.QObject.connect(
+        #    self.model,
+        #    QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"),
+        #    self.dataChanged)
 
         self.modelReset()
 
     def setupMapper(self):
-        self.mapper = QtGui.QDataWidgetMapper(self)
+        self.mapper = QtWidgets.QDataWidgetMapper(self)
         self.mapper.setModel(self.model)
         self.mapper.setOrientation(QtCore.Qt.Vertical)
-
         self.mapper.addMapping(self.ui.editMolecularFormula, MODEL.MOLECULAR_FORMULA)
         self.mapper.addMapping(self.ui.editMassDensity     , MODEL.MASS_DENSITY)
@@ -164,5 +166,6 @@
             self.mapper.addMapping(edit, key)
 
-        self.mapper.toFirst()
+        # FIXME DOESNT WORK WITH QT5
+        #self.mapper.toFirst()
 
     def dataChanged(self, top, bottom):
Index: src/sas/qtgui/Calculators/SlitSizeCalculator.py
===================================================================
--- src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision 7fb471d81b5d11daed3df86a4e8427e6a832cf7a)
+++ src/sas/qtgui/Calculators/SlitSizeCalculator.py	(revision 4992ff2626be19df7de9e5dfc0078b96bf47a75e)
@@ -5,6 +5,7 @@
 import sys
 
-from PyQt4 import QtGui
-from PyQt4 import QtCore
+from PyQt5 import QtCore
+from PyQt5 import QtGui
+from PyQt5 import QtWidgets
 
 from sas.qtgui.UI import main_resources_rc
@@ -16,5 +17,5 @@
 
 
-class SlitSizeCalculator(QtGui.QDialog, Ui_SlitSizeCalculator):
+class SlitSizeCalculator(QtWidgets.QDialog, Ui_SlitSizeCalculator):
     """
     Provides the slit length calculator GUI.
@@ -75,7 +76,8 @@
         # Location is automatically saved - no need to keep track of the last dir
         # But only with Qt built-in dialog (non-platform native)
-        path = QtGui.QFileDialog.getOpenFileName(self, "Choose a file", "",
+        path = QtWidgets.QFileDialog.getOpenFileName(self, "Choose a file", "",
                                                  "SAXSess 1D data (*.txt *.TXT *.dat *.DAT)",
-                                                 QtGui.QFileDialog.DontUseNativeDialog)
+                                                 None,
+                                                 QtWidgets.QFileDialog.DontUseNativeDialog)
 
         if path is None:
