Russian Qt Forum

Qt => Вопросы новичков => Тема начата: _Vitaliy_ от Август 15, 2011, 12:50



Название: разбор проекта diagramscene(itemChange)
Отправлено: _Vitaliy_ от Август 15, 2011, 12:50
Берем проект diagramscene из примеров, поставляемый с Qt.
В diagramitem.срр находим функцию
Код:
QVariant DiagramItem::itemChange(GraphicsItemChange change,
                     const QVariant &value)
"ремим" все что в ней есть и согласно помощи в одной из веток форума http://www.prog.org.ru/topic_4008_0.html (http://www.prog.org.ru/topic_4008_0.html) вставляем:
Код:
if (change == ItemPositionChange) {
             // value это новое положение.
             QPointF newPos = value.toPointF();
             newPos.setX(x());
             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); 
однако ограничение перемещения по оси Х не происходит !!!???
З.Ы. может вопрос и тривиальный но у меня вызвал затруднение.


Название: Re: разбор проекта diagramscene(itemChange)
Отправлено: _Vitaliy_ от Август 16, 2011, 06:57
или хотя бы ткните в каком направлении двигаться...