title: How to add widgets to a QScrollView with Python
body: <p>I am writing an app that dynamically adds and removes widgets to a <a href="https://doc.qt.io/archives/3.3/qscrollview.html#QScrollView" rel="nofollow"><code>QScrollView</code></a>. The code below, using Qt3 and python, will give me dynamic widgets, but when I add too many to be seen, no scroll bar appears. It is not yet scrollable. I've put the relevant pieces of code below.</p>
  
  <p>Any answers <strong>must be in Qt3</strong> because my company only uses Qt3. I'm new to programming and Qt in general. </p>
  
  <pre><code>PL = parser.Plist()
  
  class EC_Conf_App(QDialog):
  
  def __init__(self,parent = None,name = None,modal = 0,fl = 0):
      QDialog.__init__(self,parent,name,modal,fl)
  
      self.gridLayout = QGridLayout(self)        
      self.scrollArea = QScrollView(self)        
      self.scrollArea.setGeometry(0, 0, 369, 286)            
      self.Form1Layout = QGridLayout(self.scrollArea)        
      self.gridLayout.addWidget(self.scrollArea, 0, 0)  
  
      for item in PL.plist:
          self.section_create(item.name, item.variables)
  
  def section_create(self, name, variables):
  
  
      # ADD ROW BUTTON 
      for key, value in sorted(variables.iteritems()):
          if len(value) &gt; 3:  # if there is more than one option for the combobox
              self.addButton = QPushButton(self.scrollArea, name + '_AddButton')
  
  
              self.addButton.setText('Add Row')
              self.Form1Layout.addWidget(self.addButton, self.Ay, self.Ax)
              self.addButton.show()                
             self.connect(self.addButton,SIGNAL("clicked()"),self.add_rows)
  
  def add_rows(self):
      self.addButton = self.sender()
      self.addButton.name()
      copy_class = self.addButton.name()
      clean_name = copy_class[:-10]
      for item in PL.plist:
          if item.name == clean_name:
              PL.insert(item.name, item.heading, item.variables)
              self.remove_widgets()
              break
  
  def remove_widgets(self):
      for item in self.widgets:
          item.deleteLater()
          self.Form1Layout.remove(item)             
  
      self.construct()
  
  def construct(self):
      for item in PL.plist:
          self.section_create(item.name, item.variables)
  </code></pre>