I think both problems are bound with each other. Solving problem 2 is easy - use QGraphicsView::scale() to scale the view (there are simmilar methods to translate or rotate the view). Now having this problem solved you may see you may not need any slots with arguments - just make a slot "adjustScale" in the parent widget of the view and in this slot check positions of scrollbars or whatever you have and use scale(), translate() or rotate() to transform the view.