Hello,i am studying the address book example on Qt Assistant and on the address book example i have a come across usages of Qvariant which i don't understand.

Here is the code:

Qt Code:
  1. QVariant TableModel::data(const QModelIndex &index, int role) const
  2. {
  3. if (!index.isValid())
  4. return QVariant();//what does the use of Qvariant here mean - 1
  5.  
  6. if (index.row() >= listOfPairs.size() || index.row() < 0)
  7. return QVariant();//what does the use of Qvariant here mean - 2
  8.  
  9. if (role == Qt::DisplayRole) {
  10. QPair<QString, QString> pair = listOfPairs.at(index.row());
  11.  
  12. if (index.column() == 0)
  13. return pair.first;
  14. else if (index.column() == 1)
  15. return pair.second;
  16. }
  17. return QVariant();//what does the use of Qvariant here mean - 3
  18. }
To copy to clipboard, switch view to plain text mode 

I have commented on the code next to Qvariant usages.Someone help me understand what it means.