{
}
QRectF myRect
::boundingRect() const {
}
{
switch( event->key())
{
case Qt::Key_Left:{
setPos(x()-10,y());
checkBounds();
break;
}
case Qt::Key_Right:{
setPos(x()+10,y());
checkBounds();
break;
}
case Qt::Key_Up:{
setPos(x(),y()-10);
checkBounds();
break;
}
case Qt::Key_Down:{
setPos(x(),y()+10);
checkBounds();
break;
}
}
update();
}
void myRect::checkBounds()
{
if (x() < 0)
{
setPos(0, y());
}
else if (x() + boundingRect().right() > scene()->width())
{
setPos(scene()->width() - boundingRect().width(), y());
}
if (y() < 0)
{
setPos(x(), 0);
}
else if ( y()+ boundingRect().bottom() > scene()->height())
{
setPos(x(), scene()->height() - boundingRect().height());
}
}
{
painter->setBrush(Qt::yellow);
painter->drawRoundRect(0,0,50,50,5,5);
}
myRect::myRect(QGraphicsItem *parent) : QGraphicsItem(parent)
{
setFlag(QGraphicsItem::ItemIsFocusable);
}
QRectF myRect::boundingRect() const
{
return QRectF(0,0,50,50);
}
void myRect::keyPressEvent(QKeyEvent *event)
{
switch( event->key())
{
case Qt::Key_Left:{
setPos(x()-10,y());
checkBounds();
break;
}
case Qt::Key_Right:{
setPos(x()+10,y());
checkBounds();
break;
}
case Qt::Key_Up:{
setPos(x(),y()-10);
checkBounds();
break;
}
case Qt::Key_Down:{
setPos(x(),y()+10);
checkBounds();
break;
}
}
update();
}
void myRect::checkBounds()
{
if (x() < 0)
{
setPos(0, y());
}
else if (x() + boundingRect().right() > scene()->width())
{
setPos(scene()->width() - boundingRect().width(), y());
}
if (y() < 0)
{
setPos(x(), 0);
}
else if ( y()+ boundingRect().bottom() > scene()->height())
{
setPos(x(), scene()->height() - boundingRect().height());
}
}
void myRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->setBrush(Qt::yellow);
painter->drawRoundRect(0,0,50,50,5,5);
}
To copy to clipboard, switch view to plain text mode
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->view->setScene(scene);
scene->setSceneRect(0,0,ui->view->frameSize().width(),
ui->view->frameSize().height());
rect = new myRect;
scene->addItem(rect);
rect->setPos(scene->width()/2,0);
rect->setFocus();
}
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
scene = new QGraphicsScene();
ui->view->setScene(scene);
scene->setSceneRect(0,0,ui->view->frameSize().width(),
ui->view->frameSize().height());
rect = new myRect;
scene->addItem(rect);
rect->setPos(scene->width()/2,0);
rect->setFocus();
}
To copy to clipboard, switch view to plain text mode
Bookmarks