Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AntonUfo от Январь 22, 2011, 22:31



Название: itemChange не работает в win7....
Отправлено: AntonUfo от Январь 22, 2011, 22:31
Всем привет !

В книге Жасмин Бланшет, Марк Саммерфилд "Qt 4: программирование GUI на C++ " издание второе есть пример в котором
используется itemChange....
В Qt 4.5: Описание класса QGraphicsItem | Документация...  есть вот такой пример...


Код:
 QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
 {
     if (change == ItemPositionChange && scene()) {
         // value это новое положение.
         QPointF newPos = value.toPointF();
         QRectF rect = scene()->sceneRect();
         if (!rect.contains(newPos)) {
             // Сохраняем элемент внутри прямоугольника сцены.
             newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
             newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
             return newPos;
         }
     }
     return QGraphicsItem::itemChange(change, value);
 }

почему в XP все работает правильно... а в win7 нет...?





Название: Re: itemChange не работает в win7....
Отправлено: AntonUfo от Январь 23, 2011, 01:11
отвечу сам себе  :)

Не отлавливается itemChange т.к. нужно установить флаг QGraphicsItem::ItemSendsGeometryChanges....

"This flag was introduced in Qt 4.6..."