#include <QtWidgets>
#define SCALETOFIT
public:
protected:
#ifndef SCALETOFIT
scene
()->setSceneRect
(QRect(QPoint(0,
0), viewport
()->size
()));
if(!item) {
item
= scene
()->addRect
(QRect(0,
0,
50,
50),
QPen(Qt
::black),
QBrush(Qt
::red));
item->setPos(sceneRect().width()/2, 0);
}
#else
if(!item) {
item
= scene
()->addRect
(QRect(0,
0,
1,
1), Qt
::NoPen,
QBrush(Qt
::red));
item->setPos(3, 0);
}
fitInView(sceneRect(), Qt::KeepAspectRatio);
#endif
}
if(!item) return;
switch(ke->key()) {
case Qt::Key_Right: if(item->x() < sceneRect().width()-1) item->moveBy(1, 0); break;
case Qt::Key_Left: if(item->x() > 0) item->moveBy(-1, 0); break;
case Qt::Key_Up: if(item->y() > 0) item->moveBy(0, -1); break;
case Qt::Key_Down: if(item->y() < sceneRect().height()-1) item->moveBy(0, 1); break;
default: break;
}
}
private:
};
int main(int argc, char **argv) {
GraphicsView view;
#ifdef SCALETOFIT
view.
scene()->setSceneRect
(QRect(0,
0,
8,
16));
#endif
view.show();
return app.exec();
}
#include <QtWidgets>
#define SCALETOFIT
class GraphicsView : public QGraphicsView {
public:
GraphicsView() : QGraphicsView() { item = 0; }
protected:
void resizeEvent(QResizeEvent *re) {
#ifndef SCALETOFIT
scene()->setSceneRect(QRect(QPoint(0,0), viewport()->size()));
if(!item) {
item = scene()->addRect(QRect(0,0,50,50), QPen(Qt::black), QBrush(Qt::red));
item->setPos(sceneRect().width()/2, 0);
}
#else
if(!item) {
item = scene()->addRect(QRect(0, 0, 1, 1), Qt::NoPen, QBrush(Qt::red));
item->setPos(3, 0);
}
fitInView(sceneRect(), Qt::KeepAspectRatio);
#endif
}
void keyPressEvent(QKeyEvent *ke) {
if(!item) return;
switch(ke->key()) {
case Qt::Key_Right: if(item->x() < sceneRect().width()-1) item->moveBy(1, 0); break;
case Qt::Key_Left: if(item->x() > 0) item->moveBy(-1, 0); break;
case Qt::Key_Up: if(item->y() > 0) item->moveBy(0, -1); break;
case Qt::Key_Down: if(item->y() < sceneRect().height()-1) item->moveBy(0, 1); break;
default: break;
}
}
private:
QGraphicsRectItem *item;
};
int main(int argc, char **argv) {
QApplication app(argc, argv);
GraphicsView view;
view.setScene(new QGraphicsScene);
#ifdef SCALETOFIT
view.scene()->setSceneRect(QRect(0, 0, 8, 16));
#endif
view.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks