#include #include class MyItem : public QGraphicsRectItem { public: MyItem(QGraphicsScene *scene) : QGraphicsRectItem(0, 0, std::numeric_limits::max(), 50, 0, scene) { setBrush(QBrush(Qt::red)); } virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem * /* option */, QWidget * /* widget */ = 0) { painter->setBrush(brush()); painter->drawRect(rect()); static uint c = 0; qWarning() << "DRAW #" << ++c; } }; class MainWindow : public QMainWindow { QGraphicsScene* _scene; QGraphicsView* _view; MyItem* _my_item; QGraphicsRectItem* _smaller_item; public: MainWindow(QWidget *parent = 0) : QMainWindow(parent) { _scene = new QGraphicsScene(this); _view = new QGraphicsView(_scene, this); setCentralWidget(_view); new QGraphicsLineItem(0, -50, 0, 250, 0, _scene); _smaller_item = new QGraphicsRectItem(0, 100, std::numeric_limits::max() / 10, 50, 0, _scene); _smaller_item->setBrush(QBrush(Qt::yellow)); _my_item = new MyItem(_scene); _scene->setSceneRect(-1000, -50, static_cast(std::numeric_limits::max()) * 1.1, 250); //_view->scale(0.9, 1.0); // Fine //_view->scale(1.0, 1.0); // Overflow of rect border around _item //_view->scale(1.1, 1.0); // Overflow of viewport rect of _my_item _view->scale(2.0, 1.0); //_view->scale(10., 1.0); // Overflow for _smaller_item } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }