2012-03-21 2 views
0

У меня есть qmainwindow, в котором находится qqraphicsitems (унаследованный класс из qgraphicsitems) внутри qgraphicsview. Эти элементы содержат свои личные предметы, которые также унаследованы от qgraphicsitems. Эти пункты прослушивают события нажатия мыши. Эти элементы также имеют свои собственные другие свойства данных, такие как пользовательский идентификатор.Передача свойств объекта в главное окно с событиями в qt

Я могу передать события мыши из этих предметов в главное окно. Мне нужно передать вышеупомянутый пользовательский идентификатор щелкнутого элемента в главное окно также с событием, так что главное окно может изменить его внешний вид для набора щелкнутого элемента.

Каким образом я могу это сделать ??

+0

Попробуйте опубликовать весь EventMonitor.h, ошибка указана в строке 53, но мы ее не видим. – Masci

+0

Спасибо, я тоже приложил код – zapumal

ответ

1

Возможно, у меня не возник вопрос, но я бы использовал СЛОТЫ и СИГНАЛЫ, а не события. Например, поставить сигнал на QGraphicsScene,-то вроде:

void myItemClicked(int custom_id); 

так, когда ваши детали поймать событие мыши, они могли бы сделать:

emit scene()->myItemClicked(my_id); 

MainWindow может подключить этот сигнал, поступающий со сцены к одному из его слотов и изменить его свойства в соответствии с идентификатором элемента, поступающего по сигналу.

В противном случае, если вы позволяете элементы для вызова методов QMainWindow (это выбор дизайна) ЮО может хранить указатель на него в (к примеру) на сцене, так что элементы могут сделать:

scene()->mainwindow->aMethod(); 
+0

можно ли выпустить сигнал QMainWindow из позиции ?? – zapumal

+0

для этого вам следует сохранить ссылку или указатель на QMainWindow, где-то элементы могут получить ее и вызвать ее сигналы – Masci

+0

Компилятор не позволяет мне передать ссылку главного окна, что было моим первоначальным подходом, который не удалось ... – zapumal