title: QSortFilterProxyModel with QStandardItemModel after appendRow are not working
body: <p>Here what I have got:</p>
  
  <ul>
  <li>a <code>QTreeView</code> widget (*);</li>
  <li>Source model <code>MainModel</code> inherits from <code>QStandardItemModel</code>. No virtual <code>data() const</code> method reimplemented;</li>
  <li>Proxy <code>MainFilterProxyModel</code> inherits from <code>QSortFilterProxyModel</code>;</li>
  </ul>
  
  <p>The tree:</p>
  
  <pre><code>[PERIOD 1]
     [CHILD 1]
     [CHILD 2]
        [SUBCHILD 2.1]
        ...
     [CHILD N]
  [PERIOD 2]
  ...
  [PERIOD N]
  </code></pre>
  
  <p>So the main problem comes when I'm trying to add a <strong>CHILD-row</strong> like (**) code do. Filter proxy model, after document was added to source model, does not know about new row and didn't show it on the tree.</p>
  
  <p>I'm sure that proxy didn't get signal from <code>QStandardItemModel</code> when <code>appendRow</code> method do his job, so proxy can't filter new row, and didn't make it visible.</p>
  
  <p>Any help?</p>
  
  <p>Thanks.</p>
  
  <p>PS: If I turn off proxy, everything appended just fine. But the problem is not in proxy. Proxy just doesn't get the signal about new row appended to the main source model... </p>
  
  <hr>
  
  <p>(*) <em>Here is <code>QTreeView</code></em>:</p>
  
  <pre><code>MainView::MainView( QWidget* parent /* = 0 */ ) : QTreeView( parent )
  {
       if( !model_ )
       {
            model_ = new MainModel( this );
       }
  
       if( !proxy_ )
       {
            proxy_ = new MainFilterProxyModel( this );
            proxy_-&gt;setDynamicSortFilter( true );
            proxy_-&gt;setSourceModel( model_ );
  
            setModel( proxy_ );
       }
  }
  </code></pre>
  
  <hr>
  
  <p>(**) <em>Here is my append function</em>:</p>
  
  <pre><code>void MainModel::addRow( const DocumentPtr&amp; document, QStandardItem* parentItem )
  {
       assert( document );
  
       QList&lt; QStandardItem* &gt; items;
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
       items &lt;&lt; ( new QStandardItem );
  
       updateRow( document, items );
  
       if( !parentItem )
       {
            BOOST_FOREACH( const TimePeriod&amp; period, TimePeriod::all() )
            {
                 if( period.contains( QDateTime::fromTime_t( document-&gt;creationDate() ) ) )
                 {
                      QStandardItem* periodItem = itemByPeriod( period );
                      Q_ASSERT( periodItem );
  
                      periodItem-&gt;appendRow( items );
  
                      break;
                 }
            }
       }
       else
       {
            parentItem-&gt;appendRow( items );
       }
  }
  </code></pre>