2010-09-01 9 views
0

У меня есть gui, который показывает файл .svg. Когда пользователь нажимает (или лучше, когда unclicks), вызывается mouseReleaseEvent.QT - SvgDisplayWidget - на какой идентификатор был нажат?

Как узнать, какое изображение SVG в частности (ID) было нажато?

Я хотел бы использовать здесь:

void SvgDisplayWidget::mouseReleaseEvent(QMouseEvent *event) {} 

Благодаря

ответ

1

Я не понимаю вопроса. Вы знаете, какой виджет получил событие в своей функции mouseReleaseEvent, потому что это тот же самый виджет, где этот код выполняется. Оттуда вы можете получить доступ ко всем данным в реализации этого виджета, и вам решать, к какому SVG-изображению он относится.

+0

Спасибо, но как узнать, к какому SVG-изображению он относится? В SVG-файле для каждого изображения есть идентификаторы. Я хотел бы узнать этот идентификатор. Я не хочу получать данные о размерах x, y, width, height из самого файла svg, поскольку это положение может отличаться от графического интерфейса, если оно было перенесено во время выполнения с помощью матричных преобразований. – yper

+0

ОК, я понимаю, что вы спрашиваете, и кажется, что нет простого решения, Qt не предоставляет такого поиска в SVG-файле, который он отобразил. – teukkam

0

Вы можете получить самый верхний QGraphicsItem в данной позиции с помощью метода QGraphicsView :: itemAt.

void SvgView::mouseMoveEvent(QMouseEvent * event){ 
    QGraphicsItem* it = itemAt(event->pos()); 
    if(it){ 

    } 
    QGraphicsView::mouseMoveEvent(event); 
} 
+1

Но это не поможет вам найти идентификатор id * внутри * изображения SVG ... Извините. – tibur