[Qt-interest] Malfunctioning QGraphicsItem::ItemIsMovable?

Stephen Chu stephen at ju-ju.com
Wed Apr 27 16:16:21 CEST 2011


Sorry. The MR is <https://qt.gitorious.org/qt/qt/merge_requests/2594>

In article 
<stephen-522D1D.10113327042011 at r186-50-238-87.dialup.adsl.anteldata.net.
uy>,
 Stephen Chu <stephen at ju-ju.com> wrote:

> You probably run into this bug: 
> <http://bugreports.qt.nokia.com/browse/QTBUG-17985>
> 
> And I submitted a merge request for it: 
> <http://bugreports.qt.nokia.com/browse/QTBUG-17985>
> 
> So far it's only been reviewed on the formatting of the code, not the 
> fix itself. :(
> 
> 
> In article <BANLkTi=fAHhEzB8M4banSkQTKz8eHy+Rzw at mail.gmail.com>,
>  Sherif Ghali <sherif.ghali.1 at gmail.com> wrote:
> 
> > It occasionally seems that the index of QGraphicsScene is not
> > right. The code below demonstrates one case. If I drag the red,
> > green, or blue node, another node will move instead. If I replace
> > '-0.05' with '-0.5', dragging works normally.
> > 
> > // MyGraphicsScene.h
> > #include <QtGui>
> > 
> > class MyGraphicsScene : public QGraphicsScene
> > {
> >     Q_OBJECT
> > public:
> >     MyGraphicsScene()
> >     {
> >         setSceneRect(QRectF(QPointF(-2,-2), QSizeF(4,4)));
> >         setBackgroundBrush(Qt::black);
> > 
> >         insert_node( QPointF( -0.05,-0.05), Qt::red );
> >         insert_node( QPointF( 1,-0.05), Qt::green );
> >         insert_node( QPointF( -0.05,1), Qt::blue );
> >         insert_node( QPointF( 1,1), Qt::yellow );
> >     }
> > private:
> >     QGraphicsEllipseItem * insert_node(const QPointF & p, const QColor & 
> >     color)
> >     {
> >         const QRectF n(QPointF(-0.1,-0.1), QSizeF(0.2,0.2));
> >         QGraphicsEllipseItem * node = new QGraphicsEllipseItem( n );
> >         node->setPen(color);
> >         node->setBrush(color);
> >         node->setFlags(QGraphicsItem::ItemIsMovable);
> >         node->setPos(p);
> >         addItem(node);
> >         return node;
> >     }
> > };
> > 
> > // main.cpp
> > #include "MyGraphicsScene.h"
> > #include <QtGui>
> > 
> > int main(int argc, char * argv[])
> > {
> >     QApplication app(argc, argv);
> >     MyGraphicsScene * scene = new MyGraphicsScene;
> >     QGraphicsView * view = new QGraphicsView(scene);
> >     view->fitInView(scene->sceneRect() , Qt::KeepAspectRatio);
> >     view->setMinimumSize(QSize(640,480));
> >     view->show();
> >     return app.exec();
> > }

-- 
Stephen Chu



More information about the Qt-interest-old mailing list