Don't use -1 to query an index. It will return an invalid index.
Qt Code:
  1. ModelData->insertRows(0, 1);
  2. ModelData->setData( ModelData->index(0), &addMe, Qt::DisplayRole);
To copy to clipboard, switch view to plain text mode 
Also, I'm afraid there is something wrong with the way the custom struct is passed around:
Qt Code:
  1. void CParamDialog::on_ButtonAdd_clicked()
  2. {
  3. Model::XianStruct addMe;
  4. ...
  5. ModelData->setData(..., &addMe, ...);
  6. }
  7.  
  8. bool Model::setData(const QModelIndex &index, const QVariant &value, int role )
  9. {
  10. ...
  11. XianStruct newData = value.value<XianStruct>();
  12. ...
  13. }
To copy to clipboard, switch view to plain text mode 
Notice that you are passing a pointer but then you're expecting it to be a value.