Вот код:
#include <QtCore/QDebug>
#include <QtGui/QApplication>
#include <QtGui/QGraphicsView>
#include <QtGui/QGraphicsScene>
class GraphicsView : public QGraphicsView
{
public:
GraphicsView() : QGraphicsView()
{
startTimer( 3000 );
}
QRectF boundRect() const
{
return QRectF( 0.0, 0.0, 5000.0, 10000.0 );
}
private:
void resizeEvent( QResizeEvent* event )
{
QGraphicsView::fitInView( boundRect() );
QGraphicsView::resizeEvent( event );
}
void timerEvent ( QTimerEvent* event )
{
killTimer( event->timerId() );
qDebug() << mapToScene( viewport()->rect() ).boundingRect();
}
};
int main( int argc, char** argv )
{
QApplication app( argc, argv );
QGraphicsScene scene;
GraphicsView* view = new GraphicsView();
view->setScene( &scene );
scene.setSceneRect( view->boundRect() );
view->fitInView( view->boundRect() );
app.setActiveWindow( view );
view->show();
return app.exec();
}
Устанавливаю scene rect и view rect равные QRectF( 0.0, 0.0, 5000.0, 10000.0 ). Далее проверяю работу функции mapToScene с параметром viewport()->rect(). По идее результат должен быть равен QRectF( 0.0, 0.0, 5000.0, 10000.0 ), но на практике получаем QRectF(-15.873,-42.5532 5031.75x10085.1), что отличается. Что не так?