Hi,

I could manage to achieve what I expected. I'm putting the code here.

//Initial setup - 3 columns, 3 empty rows

p_TableFields = new QStandardItemModel(this);

p_TableFields->insertColumns(0, 3);
p_TableFields->insertRows(0, 3);

p_TableFields->setHeaderData(0, Qt::Horizontal, tr("Field Name"));
p_TableFields->setHeaderData(1, Qt::Horizontal, tr("Data Type"));
p_TableFields->setHeaderData(2, Qt::Horizontal, tr("Description"));

tblFields->setModel(p_TableFields);

connect(tblFields->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(OnSelect(const QItemSelection&, const QItemSelection&)));

//OnSelect
QModelIndexList RowsSelected = tblFields->selectionModel()->selectedRows();

//Check if first row selected
QModelIndex firstElement = p_TableFields->index(0, 0);
bool hasFirstRow = RowsSelected.contains(firstElement);

//Check if last row selected
QModelIndex lastElement = p_TableFields->index((p_TableFields->rowCount()-1), 0);
bool hasLastRow = RowsSelected.contains(lastElement);

btnMoveUp->setEnabled(!hasFirstRow);
btnMoveDown->setEnabled(!hasLastRow);


FirstRowSelected.pngLastRowSelected.png