title: GridLayout items size is not equal to each other
body: <p>I have got <code>Qt</code> class which is subclass of <code>QQuickImageProvider</code> here is <code>requestPixmap</code> function realization:</p>
  
  <pre><code>QPixmap MyImageProvider::requestPixmap(const QString &amp;id, QSize *size, const QSize       
      &amp;requestedSize){
      int width = 100;
          int height = 50;
  
          if (size)
              *size = QSize(width, height);
          QPixmap pixmap(requestedSize.width() &gt; 0 ? requestedSize.width() : width,
                         requestedSize.height() &gt; 0 ? requestedSize.height() : height);
          pixmap.fill(QColor(id).rgba());
  
          return pixmap;
   }
  </code></pre>
  
  <p>In <code>qml</code> I have <code>GridLayout</code> which items is came from image provider. By clicking buttons I can show 1, 2 or 4 items.  Here is <code>qml</code> file:</p>
  
  <pre><code> import QtQuick 2.3
   import QtQuick.Controls 1.2
   import QtQuick.Layouts 1.1
   import QtQuick.Controls.Styles 1.1
   import QtQuick.Window 2.2
  
   Window{
       id: root
       title: "settings"
       modality: Qt.ApplicationModal
       flags: Qt.Dialog
       minimumHeight: 700
       minimumWidth: 700
       maximumHeight: 700
       maximumWidth: 700
       ColumnLayout{
            id: columnLayout
            anchors.fill: parent
            RowLayout{
                ExclusiveGroup{id: exgroup}
                Button{
                    text: "1x1"
                    checkable: true
                    checked: true
                    Layout.minimumWidth: 100
                    Layout.minimumHeight: 100
                    exclusiveGroup: exgroup
                    onCheckedChanged: {
                        if(checked===true){
                        grid.columns=1
                        grid.rows=1
                        im1.visible = true
                        im2.visible = false
                        im3.visible = false
                        im4.visible = false
                        im1.source = "image://plotPixmap/yellow"
                  }
              }
              }
  
          Button{
              text: "1x2"
              checkable: true
              checked: false
              Layout.minimumWidth: 100
              Layout.minimumHeight: 100
              exclusiveGroup: exgroup
              onCheckedChanged: {
                  if(checked===true){
                      grid.columns=1
                      grid.rows=2
                      im1.visible = true
                      im2.visible = true
                      im3.visible = false
                      im4.visible = false
                      im1.source = "image://plotPixmap/red"
                      im2.source = "image://plotPixmap/black"
  
  
                  }
              }
          }
          Button{
              text: "2x1"
              checkable: true
              checked: false
              Layout.minimumWidth: 100
              Layout.minimumHeight: 100
              exclusiveGroup: exgroup
              onCheckedChanged: {
                  if(checked===true){
                      grid.columns=2
                      grid.rows=1
                      im1.visible = true
                      im2.visible = true
                      im3.visible = false
                      im4.visible = false
                      im1.source = "image://plotPixmap/blue"
                      im2.source = "image://plotPixmap/green"
  
                  }
              }
          }
          Button{
              text: "2x2"
              checkable: true
              checked: false
              Layout.minimumWidth: 100
              Layout.minimumHeight: 100
              exclusiveGroup: exgroup
              onCheckedChanged: {
                  if(checked===true){
                      grid.columns=2
                      grid.rows=2
                      im1.visible = true
                      im2.visible = true
                      im3.visible = true
                      im4.visible = true
                      im1.source = "image://plotPixmap/blue"
                      im2.source = "image://plotPixmap/green"
                      im3.source = "image://plotPixmap/black"
                      im4.source = "image://plotPixmap/red"
                  }
              }
          }
      }
      GridLayout {
          id: grid
          Layout.fillHeight: true
          Layout.fillWidth: true
          Image{
              id: im1
              Layout.fillHeight: true
              Layout.fillWidth: true
              sourceSize.height: height
              sourceSize.width: width
              Layout.rowSpan: 1
              Layout.columnSpan: 1
          }
          Image{
              id: im2
              Layout.fillHeight: true
              Layout.fillWidth: true
              sourceSize.height: height
              sourceSize.width: width
              Layout.rowSpan: 1
              Layout.columnSpan: 1
          }
          Image{
              id: im3
              Layout.fillHeight: true
              Layout.fillWidth: true
              sourceSize.height: height
              sourceSize.width: width
              Layout.rowSpan: 1
              Layout.columnSpan: 1
          }
          Image{
              id: im4
              Layout.fillHeight: true
              Layout.fillWidth: true
              sourceSize.height: height
              sourceSize.width: width
              Layout.rowSpan: 1
              Layout.columnSpan: 1
          }
      }
  }
  }
  </code></pre>
  
  <p>In c++ main: </p>
  
  <pre><code>engine-&gt;addImageProvider(QLatin1String("plotPixmap"), new MyImageProvider());
  </code></pre>
  
  <p>Everything works but when I press buttons several times size of bottom images became smaller and smaller. How to fix size o images? I want all images to be the same size and they shuld fill all space under buttons.</p>