title: PyQt - add layouts to QSplitter
body: <p>I want to use a QSplitter to split the MainWindow on two sides. On the left I want to have a layout containing a folder view and on the right another layout where I’ll plot some things. But I can only add Widgets on the QSplitter and the Layouts are not Widgets.
  The only similar questions I found were these: </p>
  
  <p><a href="http://www.qtcentre.org/threads/16856-QSplitter-multiple-layouts-how" rel="nofollow noreferrer">http://www.qtcentre.org/threads/16856-QSplitter-multiple-layouts-how</a>
  <a href="https://forum.qt.io/topic/8197/solved-qsplitter-and-qvboxlayout-problem" rel="nofollow noreferrer">https://forum.qt.io/topic/8197/solved-qsplitter-and-qvboxlayout-problem</a></p>
  
  <p>So, according to the above links, my plan is to create the two layouts, then add them to two QWidgets (using setLayout) and then add these QWidgets to QSplitter (using addWidget).
  I tried to apply that on my code but unfortunately, when I add the layout to the widget nothing shows up! </p>
  
  <p>Is there another way to achieve what I want? 
  Have I misunderstood the answers?</p>
  
  <p>Here’s the code. I send you only the folder view layout in order for the code to be simpler.
  Also, I’m completely new to pyqt and object-oriented programming, so any commends on how to improve it are welcome!</p>
  
  <p>Thanks in advance!</p>
  
  <pre><code>import sys
  from PyQt5.QtWidgets import *
  from PyQt5.QtGui import *
  from PyQt5.QtCore import *
  
  class Window(QMainWindow):
  
      def __init__(self, parent=None):
  
          super(Window, self).__init__(parent)
          self.UI()
  
      def UI(self):
  
          self.central_widget = QStackedWidget()
          self.setCentralWidget(self.central_widget)
  
          self.statusBar().showMessage("Ready")
  
          page1 = FirstWidget(self)
          page1.visualize_btn.clicked.connect(self.P_2)
          self.central_widget.addWidget(page1)        
  
          self.setGeometry(10, 10, 800, 500)    #All three methods have been inherited from the QWidget class.
          self.showMaximized()
          self.setWindowTitle('PTV')
          self.setWindowIcon(QIcon('tuc_logo.png'))
  
      def P_2(self):
  
          page2 = VisualizeWidget(self)
          self.central_widget.addWidget(page2)
          self.central_widget.setCurrentWidget(page2)
  
  
  class FirstWidget(QWidget):
  
      def __init__(self, parent=None):
          super(FirstWidget, self).__init__(parent)
          self.buttons()
  
      def buttons(self):
  
          self.btn2 = QPushButton("Visualize")
          self.buttonsLayout = QVBoxLayout() 
          self.buttonsLayout.addWidget(self.btn2)
          self.visualize_btn = self.btn2        
          self.setLayout(self.buttonsLayout)
  
  
  class VisualizeWidget(QWidget):
  
      def __init__(self, parent=None):
          super(VisualizeWidget, self).__init__(parent)
  
  
          self.dirmodel = QFileSystemModel()        
          self.dirmodel.setFilter(QDir.NoDotAndDotDot | QDir.AllDirs)    # Don't show files, just folders
  
          self.folder_view = QTreeView(parent=self);
          self.folder_view.setModel(self.dirmodel)
          self.folder_view.clicked[QModelIndex].connect(self.clicked)
  
          self.now_layout = QVBoxLayout()
          self.now_layout.addWidget(self.folder_view)
  
          #self.setLayout(self.now_layout)
  
          #HERE is where I'm trying to add the layout to the widget. 
          self.left_widget = QWidget()
          self.left_widget.setLayout(self.now_layout)            
  
  
      def set_path(self):
          self.dirmodel.setRootPath("")
  
      def clicked(self, index):
          index = self.selectionModel.currentIndex()
          dir_path = self.dirmodel.filePath(index)
  
          self.filemodel.setRootPath(dir_path)
          self.file_view.setRootIndex(self.filemodel.index(dir_path))          
  
  def main():
      app = QApplication(sys.argv)
      win = Window()
      win.show()
      app.exec_()
  
  if __name__ == '__main__':
      sys.exit(main()) 
  </code></pre>