
Originally Posted by
tonylin0826
thanks, but i need to draw the circle while i am pressing the left button not release the button.
That's what I meant. You are drawing the circle while the button is pressed but when it is released, you need to make your item permanent.
Here is a simple example that uses QGraphicsView:
#include <QtGui>
Q_OBJECT
public:
current = 0;
radius = 0;
t.setInterval(10);
connect(&t, SIGNAL(timeout()), this, SLOT(incDiameter()));
}
radius = 5;
r.setWidth(2*radius);
r.setHeight(2*radius);
r.moveCenter(mapToScene(me->pos()).toPoint());
current->setRect(r);
scene()->addItem(current);
t.start();
}
t.stop();
current = 0;
}
private slots:
void incDiameter() {
radius++;
r.setWidth(2*radius);
r.setHeight(2*radius);
r.moveCenter(current->rect().center().toPoint());
current->setRect(r);
}
private:
int radius;
};
#include "main.moc"
int main(int argc, char **argv) {
View view;
view.show();
return app.exec();
}
#include <QtGui>
class View : public QGraphicsView {
Q_OBJECT
public:
View() : QGraphicsView() {
current = 0;
radius = 0;
t.setInterval(10);
connect(&t, SIGNAL(timeout()), this, SLOT(incDiameter()));
}
void mousePressEvent(QMouseEvent *me) {
current = new QGraphicsEllipseItem;
radius = 5;
QRect r;
r.setWidth(2*radius);
r.setHeight(2*radius);
r.moveCenter(mapToScene(me->pos()).toPoint());
current->setRect(r);
scene()->addItem(current);
t.start();
}
void mouseReleaseEvent(QMouseEvent *me) {
t.stop();
current = 0;
}
private slots:
void incDiameter() {
QRect r;
radius++;
r.setWidth(2*radius);
r.setHeight(2*radius);
r.moveCenter(current->rect().center().toPoint());
current->setRect(r);
}
private:
QGraphicsEllipseItem *current;
QTimer t;
int radius;
};
#include "main.moc"
int main(int argc, char **argv) {
QApplication app(argc, argv);
View view;
view.setScene(new QGraphicsScene(0,0,600,400));
view.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks