title: How to get Index Row number from Source Model
body: <p>Clicking the <code>QTableView</code> "<strong>Item_B_001</strong>" prints out its row number # <strong>0</strong>.</p>
  
  <p>But in source model's <code>self.items</code> this item corresponds to the number # 3.  How to get a "real" Source Model's Item's row number - a number it really corresponds to?</p>
  
  <p><img src="https://i.stack.imgur.com/MaGjE.png" alt="enter image description here"></p>
  
  <pre><code>from PyQt4.QtCore import *
  from PyQt4.QtGui import *
  import sys
  
  class Model(QAbstractTableModel):
      def __init__(self, parent=None, *args):
          QAbstractTableModel.__init__(self, parent, *args)
          self.items = ['Item_A_001','Item_A_002','Item_B_001','Item_B_002']
  
      def rowCount(self, parent=QModelIndex()):
          return len(self.items)       
      def columnCount(self, parent=QModelIndex()):
          return 1
  
      def data(self, index, role):
          if not index.isValid(): return QVariant()
          elif role != Qt.DisplayRole:
              return QVariant()
  
          row=index.row()
          if row&lt;len(self.items):
              return QVariant(self.items[row])
          else:
              return QVariant()
  
  class Proxy(QSortFilterProxyModel):
      def __init__(self):
          super(Proxy, self).__init__()
  
      def filterAcceptsRow(self, row, parent):
          if '_B_' in self.sourceModel().data(self.sourceModel().index(row, 0), Qt.DisplayRole).toPyObject():
              return True
          return False
  
  class MyWindow(QWidget):
      def __init__(self, *args):
          QWidget.__init__(self, *args)
  
          tableModel=Model(self)               
  
          proxyModel=Proxy()
          proxyModel.setSourceModel(tableModel)
  
          self.tableview=QTableView(self) 
          self.tableview.setModel(proxyModel)
          self.tableview.clicked.connect(self.viewClicked)
          self.tableview.horizontalHeader().setStretchLastSection(True)
  
          layout = QVBoxLayout(self)
          layout.addWidget(self.tableview)
          self.setLayout(layout)
  
      def viewClicked(self, indexClicked):
          print 'index of proxy row', indexClicked.row()
  
  if __name__ == "__main__":
      app = QApplication(sys.argv)
      w = MyWindow()
      w.show()
      sys.exit(app.exec_())
  </code></pre>