Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Fregloin от Апрель 01, 2014, 10:18



Название: Перехват изменения свойств QGraphicsObject в другом QGraphicsObject?
Отправлено: Fregloin от Апрель 01, 2014, 10:18
Привет. Есть класс наследованный от QGpahicsObject (QItem) у которого есть такие свойства, как x,y,z,rotation,matrix и т.д. Они объявлены через Q_PROPERTY.
Есть еще один класс наследованный от QGraphicsObject (QEditor), задача которого содержать в себе элемент QItem и изменять его свойства. Каким образом можно перехватить изменения свойств QItem, что бы QEditor знал о них. Проблема в том, что если программно задать координаты например или поворот для QItem, то QEditor об этом не знает и рисуется по старому, хотя QItem уже в новой позиции или под другим углом. Классов на самом деле много, и набор свойств у всех разный. Сначала глянул на sceneItemFilter но это не то что надо. itemChange то что надо, но он только для внутренних свойвст элемента, т.е. достучаться с другого элемента в него нельзя. Есть ли возможность как то перехватить эти изменения извне или писать костыль?


Название: Re: Перехват изменения свойств QGraphicsObject в другом QGraphicsObject?
Отправлено: Old от Апрель 01, 2014, 10:55
Привет. Есть класс наследованный от QGpahicsObject (QItem) у которого есть такие свойства, как x,y,z,rotation,matrix и т.д. Они объявлены через Q_PROPERTY.
У свойств есть возможность установить сигнал-нотификатор, который будет эмитеться при любом изменении свойства.
Q_PROPERTY(type name
           (READ getFunction [WRITE setFunction] |
            MEMBER memberName [(READ getFunction | WRITE setFunction)])
           [RESET resetFunction]
           [NOTIFY notifySignal]
           [REVISION int]
           [DESIGNABLE bool]
           [SCRIPTABLE bool]
           [STORED bool]
           [USER bool]
           [CONSTANT]
           [FINAL])