#include #include #include #include #include #include #include class MyItem : public QGraphicsRectItem { public: MyItem() : QGraphicsRectItem(0, 0, std::numeric_limits::max(), 50) { 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; public: MainWindow(QWidget *parent = 0) : QMainWindow(parent) { _scene = new QGraphicsScene(this); _view = new QGraphicsView(_scene, this); setCentralWidget(_view); _scene->addLine(0, -50, 0, 250); _scene->addRect(0, 100, std::numeric_limits::max() / 10, 50, QPen(), QBrush(Qt::yellow)); _scene->addItem(new MyItem()); _scene->setSceneRect(-1000, -50, static_cast(std::numeric_limits::max()) * 1.1, 250); //_view->scale(1.1, 1.0); // Overflow of viewport rect of MyItem (red rectangle) //_view->scale(2.0, 1.0); _view->scale(10., 1.0); // Overflow for yellow and red rectangle } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }