Note that there are some explanatory texts on larger screens.

plurals
  1. POmouserelease and move events of QWidget is not working
    text
    copied!<p>Here i develoed a custom widget to print some shape. But here my MouseRelease and MouseMove event are not working.wh t is the problem of my code. As well as some Asserts are executed. please help me to solve this.</p> <p>This is my header file</p> <pre><code>//painter.h #ifndef PAINTER_H #define PAINTER_H #include &lt;QWidget&gt; #include &lt;QGraphicsView&gt; #include &lt;math.h&gt; #include &lt;QVector&gt; #include &lt;QMouseEvent&gt; #include &lt;QPoint&gt; class painter : public QWidget { Q_OBJECT private: enum Shape{CIRCLE,RECTENGEL,TRIANGEL} shape; QGraphicsView *graphic; QGraphicsScene *Scene; QPoint *start; QPoint *end; QPen *pen; QBrush *brush; QVector&lt;QGraphicsItem*&gt; *items; public: explicit painter(QWidget *parent = 0); void setSize(double width,double height); void setShape(Shape value); void addItem(); void clear(); void scale(); signals: public slots: protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); }; #endif // PAINTER_H </code></pre> <p>and this is my CPP file</p> <pre><code>//painter.cpp #include "painter.h" #include &lt;QDebug&gt; #include &lt;QGraphicsView&gt; #include &lt;iterator&gt; painter::painter(QWidget *parent) : QWidget(parent) { graphic = new QGraphicsView(this); Scene = new QGraphicsScene(this); pen = new QPen; brush = new QBrush; start = new QPoint; end = new QPoint; items = new QVector&lt;QGraphicsItem*&gt;(); graphic-&gt;setScene(Scene); //Scene-&gt;addEllipse(10,10,50,50,*pen,*brush);//Scene-&gt;addLine(0,0,1,1); // Scene-&gt;addRect(70,70,50,50,*pen,*brush); graphic-&gt;setSceneRect(0,0,500,500); Scene-&gt;addEllipse(20,20,20,20,*pen,*brush); } void painter::setSize(double width,double height) { graphic-&gt;setSceneRect(0,0,width,height); } void painter::setShape(Shape value) { if(value==CIRCLE) shape = CIRCLE; else if(value==RECTENGEL) shape = RECTENGEL; else if(value=TRIANGEL) shape=TRIANGEL; else throw("Invalid Shape"); } void painter::addItem() { QGraphicsItem *newItem; double length = sqrt(pow((double)(start-&gt;x()-end-&gt;x()),2)+ pow((double)(start-&gt;y()-end-&gt;y()),2)); if(shape==TRIANGEL) { // QPolygonF triangel; // triangel. // Scene-&gt;addPolygon(,pen,brush); } else if(shape==RECTENGEL) newItem = (QGraphicsItem*)Scene-&gt;addRect(end-&gt;x()-length,end-&gt;y()-length,2*length,2*length,*pen,*brush); else newItem = (QGraphicsItem*)Scene-&gt;addEllipse(end-&gt;x()-length,end-&gt;y()-length,2*length,2*length,*pen,*brush); items-&gt;push_back(newItem); } void painter::clear() { for(int i=0;i&lt;items-&gt;size();i++) Scene-&gt;removeItem(items-&gt;at(i)); } void painter::scale() { } void painter::mousePressEvent(QMouseEvent *event) { end-&gt;setX(50); end-&gt;setY(50); start-&gt;setX(event-&gt;x()); start-&gt;setY(event-&gt;y()); shape = RECTENGEL; addItem(); } void painter::mouseMoveEvent(QMouseEvent *event) { qDebug("move"); } void painter::mouseReleaseEvent(QMouseEvent *event) { end-&gt;setX(event-&gt;x()); end-&gt;setY(event-&gt;y()); addItem(); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload