I found the solution
A lot of post on stackexchange showme the way to do that
Here a sample extract of the code in c++ :
//Declaration
CMyQgsMapCanvas * mpMapCanvas;
QgsMapToolEmitPoint * mpClickPoint;
mpMapCanvas = new CMyQgsMapCanvas( this, NULL);
mpMapCanvas->create();
mpMapCanvas->setProjection();
mpClickPoint = new QgsMapToolEmitPoint(mpMapCanvas);
mpMapCanvas->setMapTool(mpClickPoint);
connect(mpClickPoint ,SIGNAL(canvasClicked(QgsPoint,Qt::MouseButton)),this, SLOT(calcPoint(QgsPoint,Qt::MouseButton)));
// the slot
void MainWindow::calcPoint(QgsPoint pPoint,Qt::MouseButton pMouseBtn)
{
qDebug() << "Mouse Click";
}
Now each you click on the canvas the slot was called.
I think that mpClickPoint can be a QgsMapTool cause of inherit of classes