title: QWidget Geometry() not updating
body: <p>I have <code>QWidget</code>s lined up in a <code>QVBoxLayout</code> inside a <code>QScrollArea</code> with <code>setWidgetResizable(True)</code></p>
  
  <p>When I resize one of the <code>QWidget</code>s, the <code>QWidget</code>s relocate themselves accordingly in the graphical user interface, but their <code>geometry()</code> property doesn't reflect that, <code>geometry().x()</code> and <code>geometry().y()</code> both remain the same before and after relocation. </p>
  
  <p>The only method I have found so far to update the <code>x()</code> and <code>y()</code> coordinates is to <code>hide()</code> and <code>show()</code> the <code>QScrollArea</code>.</p>
  
  <p>I have tried <code>update()</code>, <code>updateGeometry()</code> and <code>repaint()</code> without any success.</p>
  
  <p>Here is a sample test code that I made to summarize the problem :</p>
  
  <pre><code>import sys
  from PySide import QtGui, QtCore
  
  
  class MainWindow(QtGui.QMainWindow):
  
      def __init__(self):
          super(MainWindow, self).__init__()
  
          self.showMaximized()
          self.widget_window = QtGui.QWidget()
          self.scrollarea = QtGui.QScrollArea()
          self.v_layout = QtGui.QVBoxLayout()
          self.test_1 = QtGui.QPushButton('Test 1')
          self.test_2 = QtGui.QPushButton('Test 2')
          self.v_layout.addWidget(self.test_1)
          self.v_layout.addWidget(self.test_2)
          self.widget_window.setLayout(self.v_layout)
          self.scrollarea.setWidgetResizable(True)
          self.scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
          self.scrollarea.setAlignment(QtCore.Qt.AlignCenter)
          self.scrollarea.setWidget(self.widget_window)
          self.setCentralWidget(self.scrollarea)
          print(self.test_2.geometry().x())
          print(self.test_2.geometry().y())
          self.test_1.setFixedHeight(1000)
          #uncommenting the following next two lines, solves the problem
          #self.scrollarea.hide()
          #self.scrollarea.show()
          print(self.test_2.geometry().x())
          print(self.test_2.geometry().y())
  
  def main():
      app = QtGui.QApplication(sys.argv)
      main = MainWindow()
      sys.exit(app.exec_())
  
  if __name__ == "__main__":
      main()
  </code></pre>
  
  <p>My questions are :</p>
  
  <ol>
  <li>Is there a better solution ?</li>
  <li>Isn't <code>updateGeometry()</code> supposed to actually update the <code>geometry()</code> ?</li>
  <li>Why is this behavior happening ? (i.e why does it update graphically but not programmatically ?)</li>
  <li>Can using <code>hide()</code> and <code>show()</code> successively cause some problems in other contexts (window flickering or something else...) ?</li>
  </ol>