Цитированием не злоупотребляйте
2) Как реализовать подобное с QWidget? Хорошо, переопределили
void mousePressEvent(QMouseEvent *event);
далее ткнули мышкой в элемент, получили, например,
Но что же дальше?
Дальше надо проверить все структуры данных которые соответствуют нарисованному. Напр есть полигон - проверить может event->pos() внутри него. Причем с учетом масштаба как он отрисован (там вместо полигона может быть аж точка). Причем с каким-то запасом - юзер не обязан точно попадать. И так для всего что нарисовано.
Дальнейший ход мыслей понятен: "ой, это так сложно, возьму-ка я готовый классик который за меня это все сделает, (напр QGraphicsScene)". Хотите - берите, но помните что говорила сестрица Аленушка
Не пей воды - козленочком станешь