title: Pyqt5 QAbstractTableModel dataChanged not updating data
body: <p>I am trying to update my QTableView after I receive a notice via pydispatcher of a change in the system. I did create the following functions</p>
  
  <pre><code>def rowCount(self, parent=None):
      return len(self.m_list)
  
  def columnCount(self, parent=None):
      return len(self.table_def)
  
  def headerData(self, col, orientation, role):
      if orientation == Qt.Horizontal and role == Qt.DisplayRole:
          return self.table_def[col]['Header']
      return QVariant()
  
  def data(self, index, role=Qt.DisplayRole):
      if not index.isValid():
          return None
      if index.row() &gt;= len(self.m_list) or index.row() &lt; 0:
          return None
  
      row = index.row()
      col = index.column()
  
      print("Called for (%s, %s, %s)" % (row, col, role))
      if role == Qt.DisplayRole:
          return self.table_def[index.column()]['Function'](index.row())
      elif role == Qt.BackgroundRole:
          batch = (index.row() // 100) % 2
          if batch == 0:
              return QApplication.palette().base()
  
          return QApplication.palette().alternateBase()
      else:
          return None
  
  def flags(self, index):
      if not index.isValid():
          return None
      return Qt.ItemIsEnabled
  
  def update_model(self, data):
      print('update_model')
      index_1 = self.index(0, 0)
      index_2 = self.index(0, 1)
      self.dataChanged.emit(index_1, index_2, [Qt.DisplayRole])
  </code></pre>
  
  <p>The line <code>self.dataChanged.emit(index_1, index_2, [Qt.DisplayRole])</code> does not seems to do anything; i.e. <code>data(self, index, role=Qt.DisplayRole)</code> is not called.</p>
  
  <p>If I click on the table, then <code>data(self, index, role=Qt.DisplayRole)</code> is called and the table update.</p>
  
  <p>The fix that I have right now is to call beginResetModel() and endResetModel(). That works, but it is not how it should work.</p>
  
  <p>Any idea what could be happening?</p>